-
[java] 백준 알고리즘 2941번 크로아티아 알파벳 풀이알고리즘/백준 알고리즘 2018. 5. 25. 14:44
글씨들을 걸러야 할 것 같은데
어떻게 처리할지 생각해봤다.
일단 모든 알파벳에 대해 한글자씩 추가하고, 크로아티아 알파벳으로 해당되는 문자는 하나의 알파벳으로 고려하니까
그만큼 빼주면 되겠다고 생각했다.
1. 특수문자 '-'가 붙는 글자가 나오면 앞에 어떠한 알파벳이든
앞의 알파벳과 함께 크로아티아 알파벳이 되므로
특수문자 '-'로 추가된 +1을 다시 -1을 해준다.
2. 특수문자 '='가 붙는 것은 기본적으로 어떠한 알파벳이 앞에 와도 크로아티아 알파벳이 되므로
-1을 해준다.
그러나, 'dz=' 의 경우는 3개의 문자가 1개의 문자로 취급하므로 -2가 되어야한다.
3. 'nj' 와 'lj'의 경우, 하나의 크로아티아 알파벳이므로 -1을 해준다.
* 풀이 소스
123456789101112131415161718192021222324252627282930313233343536373839public 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 '알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[java] 백준 알고리즘 15802번 타노스 풀이 (0) 2018.05.28 [java] 백준 알고리즘 2292번 벌집 풀이 (0) 2018.05.25 [java] 백준 알고리즘 5622번 다이얼 풀이 (0) 2018.05.24 [java] 백준 알고리즘 2908번 상수 풀이 (0) 2018.05.24 [java] 백준 알고리즘 1316번 그룹 단어 체크 풀이 (0) 2018.05.23