본문 바로가기

문제 풀이/Baekjoon

[백준] S5 2941번 크로아티아 알파벳 (JAVA)

문제 출처 - Baekjoon Online Judge

문제는 여기

 

2941번: 크로아티아 알파벳

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=

www.acmicpc.net

[문제] 

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.

č c=
ć c-
dz=
đ d-
lj lj
nj nj
š s=
ž z=

예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

[입력]

첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.

단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.

[출력]

입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

 

 


[풀이]

1. 크로아티아 알파벳에 해당하는 경우인지 체크하면서 탐색한다.

2. 크로아티아 알파벳에 해당하는 경우, 카운트를 증가시키고 해당 문자의 수만큼 뒤로 이동해서 다시 체크하기 시작한다.

3. 크로아티아 알파벳이 아닌 경우, 카운트를 증가시키고 바로 다음부터 체크한다.

[접근]

1. 문자열을 돌면서 크로아티아 알파벳인지 아닌지를 체크하며 모든 문자열을 탐색해야겠다고 생각을 하였고 이렇게 문제를 해결하였다.

[코드]

package BOJ_silver;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main_S5_2941 {
	static String str;
	static int count;

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
		str = br.readLine();
 
		for (int i = 0; i < str.length(); i++) {
 
			char c = str.charAt(i);
 
			
			// c= or c-
			if(c == 'c') {
				if(i < str.length() - 1) {
					if(str.charAt(i + 1) == '=') {
						i++;		
					}
					else if(str.charAt(i + 1) == '-') {
						i++;
					}
				}
			}
			// dz= or d-
			else if(c == 'd') {
				if(i < str.length() - 1) {
					if(str.charAt(i + 1) == 'z') {
						if(i < str.length() - 2) {
							if(str.charAt(i + 2) == '=') {
								i += 2;
							}
						}
					}
					else if(str.charAt(i + 1) == '-') {
						i++;
					}
				}
			}
			// lj
			else if(c == 'l') {
				if(i < str.length() - 1) {
					if(str.charAt(i + 1) == 'j') {
						i++;
					}
				}
			}
			// nj
			else if(c == 'n') {
				if(i < str.length() - 1) {
					if(str.charAt(i + 1) == 'j') {
						i++;
					}
				}
			}
			// s=
			else if(c == 's') {
				if(i < str.length() - 1) {
					if(str.charAt(i + 1) == '=') {
						i++;
					}
				}
		    }
			// z=
			else if(c == 'z') {
				if(i < str.length() - 1) {
					if(str.charAt(i + 1) == '=') {
						i++;
					}
				}
			}
		    
			count++;
		}
 
		System.out.println(count);
	}
}