지극히 개인적인 개발블로그
백준 알고리즘 2941: 크로아티아 알파벳 본문
너무 단순하게만 생각했을까요.
if문으로 크로아티아 알파벳만 판별하면 될줄 알았는데 런타임에러가 뜨는군요
import java.util.Scanner;
public class Sol_2941 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String word = sc.next();
char[] arr = word.toCharArray();
int ans = arr.length;
for(int i=0; i<word.length(); i++) {
if (arr[i] == 'c' && arr[i + 1] == '=')
ans -= 1;
else if (arr[i] == 'c' && arr[i + 1] == '-')
ans -= 1;
else if (arr[i] == 'd' && arr[i + 1] == 'z' && arr[i + 2] == '=')
ans -= 1;
else if (arr[i] == 'd' && arr[i + 1] == '-')
ans -= 1;
else if (arr[i] == 'l' && arr[i + 1] == 'j')
ans -= 1;
else if (arr[i] == 'n' && arr[i + 1] == 'j')
ans -= 1;
else if (arr[i] == 's' && arr[i + 1] == '=')
ans -= 1;
else if (arr[i] == 'z' && arr[i + 1] == '=')
ans -= 1;
}
System.out.println(ans);
}
}
그래서 if문 자체를 싹 지워버렸습니다.
대신에 String메소드인 replace를 이용했습니다. 단어가 어떻게 바뀌는지는 중요하지 않습니다. 길이만 구하면 되니까요.
import java.util.Scanner;
public class Sol_2941 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String word = sc.next();
String[] crotia = {"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};
for(int i=0; i<8; i++)
{
word = word.replace(crotia[i], "x");
}
System.out.println(word.length());
}
}