단계별로 풀어보기 > 심화 1 > 크로아티아 알파벳
https://www.acmicpc.net/problem/2941
다음과 같이 크로아티아 알파벳에 대한 표가 주어지고, 입력으로 크로아티아 알파벳이 주어질 때, 해당 알파벳이 몇 글자인지 출력하라.

'=', '-', 'j' 가 앞에 문자와 하나로 묶인다는 가정하에 풀이한다.
'='의 경우는 'dz'가 붙는 경우와 'z'가 붙은 경우를 파악하고,
'j'의 경우에는 'n', 'l'이 오는 경우를 파악하여 조건문을 설정한다.
import java.io.*;
public class 크로아티아_알파벳 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String target = br.readLine();
int num = 0;
for(int i = 1; i < target.length(); i++){
char a =target.charAt(i);
if(a == '-') num++;
if (a == '=') {
if(target.charAt(i-1) == 'z'){
if( i>=2 && target.charAt(i-2) == 'd') num+=2;
else num++;
continue;
}
num++;
}
if (a == 'j'){
if(target.charAt(i-1) == 'n' || target.charAt(i-1) == 'l') num++;
}
}
bw.write(String.valueOf(target.length()-num));
bw.flush();
bw.close();
br.close();
}
}
문자열을 순회하면서 조건에 따라서 하나의 문자로 따질 것인지, 여러 문자로 따질 것인지 파악하면 된다.
시간 복잡도는 O(n) 이다.
