백준 단계별로 풀어보기하다가 얻어갈게 있는 문제인 것 같아서 확실히 익히기 위해서 가져와봤습니다!
풀이는 항상 그렇듯 누구든 생각해낼수 있도록 풀어 봤습니다.


항상 그렇듯 문제를 잘 읽는게 중요한데요. 위 목록에 있는것만이 저런 문자를 적을 수 없어 두글자로 대체된 크로아티아 알파벳입니다. 저 목록에 속한 문자들은 두 글자가 한 글자구요. a나 e같은 것들도 하나의 크로아티아 알파벳입니다.
자 먼저 목록표를 작성해 봅시다.
String[] croatiaAlphabet = {"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};
입력값으로 받아온 문자가 저 목록에 속한다면? c=라고 되있는것을 두글자가 아닌 한글자로 읽어줘야겠죠.
그것을 위해 replace 함수를 사용합니다.
- 자바 replace 함수 사용법
str.replace(oldString, newString)입니다. 기존의 알파벳에서 바꾸고자하는 OldString을 가져와 새로운 문자열 newString으로 바꿔줍니다!
어떤 문자로 해도 상관없지만 크로아티아 문자가 대체된 것을 잘 알아볼 수 있게 @로 바꿔보겠습니다.
for(int i =0; i < croatiaAlphabet.length; i++){
alphabets = alphabets.replace(croatiaAlphabet[i], "@");
}
아까 목록에 속하는 문자들은 하나로 읽는다고 했죠? 그러니까 글자의 갯수를 셀때 @를 통해 두 글자를 한 글자로 바꿔서 셀 수 있게 해줬습니다!
그리고 단순히 목록에있는것 만을 세는것이 아니라 a나 k처럼 기존 알파벳들도 크로아티아 문자기 때문에 한글자로 세주어야합니다!
그래서 이렇게 세주면 답이 나오는 문제였습니다 감사합니다!
System.out.println(alphabets.length());
전체 코드
package problemSolving;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
public class Baekjoon2941 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] croatiaAlphabet = {"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};
String alphabets = scanner.nextLine();
for(int i =0; i < croatiaAlphabet.length; i++){
alphabets = alphabets.replace(croatiaAlphabet[i], "@");
}
System.out.println(alphabets.length());
}
}
'코테대비' 카테고리의 다른 글
[SWEA/JAVA] 1206. 1일차 - View (2) | 2024.10.31 |
---|---|
[백준/JAVA] 10870번: 피보나치 수 5 (코테대비5) (2) | 2024.10.18 |
[백준/JAVA] 2460번: 지능형 기차 (코테대비4) (1) | 2024.10.18 |
[백준/JAVA] 10818번: 최소 최대 (코테대비3) (3) | 2024.10.13 |
[백준/JAVA] 3460번: 이진수 (코테대비2) (1) | 2024.10.13 |