Algorithm/백준
백준 2941 크로아티아 알파벳
chbong
2022. 8. 9. 21:38
package ch.baekjoon;
import java.util.Scanner;
public class Algorithm4 {
/*
문제
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
크로아티아 알파벳 변경
č c=
ć c-
dž dz=
đ d-
lj lj
nj nj
š s=
ž z=
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
입력
첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.
단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.
출력
입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
예제 입력
ljes=njak
출력
6
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//System.out.println("입력 : ");
// String word = sc.next();
String word = "dz=ak";
// 크로아티아 비교 단어들을 arr배열에 담음
String[] arr = {"c=","c-","dz=","d-","lj","nj","s=","z="};
// 비교 단어들만큼 반복문을 돌리며 word에 포함되어있으면 그단어들을 !로 치환
// 만약 알파벳으로 치환하거나 위의 단어들과 겹쳐지는 단어가 있으면 contains에 다시한번 겹칠 수 있기에
// 비교 단어에 없는 !로 치환함
for (String s : arr) {
if (word.contains(s)) {
word = word.replaceAll(s, "!");
}
}
// 치환된 word의 길이
int result = word.length();
System.out.println(result);
}
}
문제를 제대로 읽지 못하여서 처음에는 dz= -> dz 식으로 변경되는걸 1자리가 아닌 2자리로 주어서 테스트에 실패했다.
테스트에 실패한 후 다시 차분하게 문제를 읽고 난 후에 단어들이 1자리로 변경된다는걸 깨닫고 문제를 해결하였다.