알고리즘/백준 알고리즘
[java] 백준 알고리즘 2941번 크로아티아 알파벳 풀이
희랍인 조르바
2018. 5. 25. 14:44
글씨들을 걸러야 할 것 같은데
어떻게 처리할지 생각해봤다.
일단 모든 알파벳에 대해 한글자씩 추가하고, 크로아티아 알파벳으로 해당되는 문자는 하나의 알파벳으로 고려하니까
그만큼 빼주면 되겠다고 생각했다.
1. 특수문자 '-'가 붙는 글자가 나오면 앞에 어떠한 알파벳이든
앞의 알파벳과 함께 크로아티아 알파벳이 되므로
특수문자 '-'로 추가된 +1을 다시 -1을 해준다.
2. 특수문자 '='가 붙는 것은 기본적으로 어떠한 알파벳이 앞에 와도 크로아티아 알파벳이 되므로
-1을 해준다.
그러나, 'dz=' 의 경우는 3개의 문자가 1개의 문자로 취급하므로 -2가 되어야한다.
3. 'nj' 와 'lj'의 경우, 하나의 크로아티아 알파벳이므로 -1을 해준다.
* 풀이 소스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | public class Baekjoon2941 { 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 word = br.readLine(); int alphabetCount =0; for(int i=0; i<word.length(); i++) { alphabetCount++; if(word.charAt(i) == 45) { // 특수문자 '-'가 붙을 경우, alphabetCount -= 1; }else if(word.charAt(i) == 61) { // 특수문자 '='가 붙을 경우, alphabetCount -= 1; /* 특수문자 '='가 붙고 앞에서 dz가 붙는 즉, 'dz=' 문자의 경우, */ if(String.valueOf(word.charAt(i-1)).equals("z") && String.valueOf(word.charAt(i-2)).equals("d")) { alphabetCount -= 1; } /* 'lj'와'nj'의 경우, */ }else if(String.valueOf(word.charAt(i)).equals("j") && (String.valueOf(word.charAt(i-1)).equals("l") || String.valueOf(word.charAt(i-1)).equals("n") )){ alphabetCount -= 1; } } bw.write(String.valueOf(alphabetCount)); bw.flush(); } } | cs |