본문 바로가기
코딩테스트/백준

JAVA 백준 2941번 크로아티아 알파벳

by 광고(주) 2022. 6. 2.
반응형

문제

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
크로아티아 알파벳 변경
č c=
ć c-
dž dz=
đ d-
lj lj
nj nj
š s=
ž z=
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

입력

첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.
단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.
ljes=njak
ddz=z=
nljj
c=c=
dz=ak

출력

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

알고리즘 분류

구현(implementation), 문자열(string)

소스코드

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        char[] str = br.readLine().toCharArray();
        char[][] format = {
                "c=".toCharArray(),
                "c-".toCharArray(),
                "dz=".toCharArray(),
                "d-".toCharArray(),
                "lj".toCharArray(),
                "nj".toCharArray(),
                "s=".toCharArray(),
                "z=".toCharArray()
        };
        int result = 0;
        for (int i = 0; i < str.length; i++) {
            int remain = str.length - i;
            for (int j = 0; j < format.length; j++) {
                boolean check = true;
                if (remain >= format[j].length) {
                    for (int k = 0; k < format[j].length; k++) {
                        if (check && str[i + k] != format[j][k]) {
                            check = false;
                        }
                    }
                    if (check) {
                        i = i + format[j].length - 1;
                    }
                }
            }
            result++;
        }
        System.out.println(result);
    }

}
반응형

'코딩테스트 > 백준' 카테고리의 다른 글

JAVA 백준 1712번 손익분기점  (0) 2022.06.03
JAVA 백준 1316번 그룹 단어 체커  (0) 2022.06.02
JAVA 백준 5622번 다이얼  (0) 2022.06.01
JAVA 백준 2908번 상수  (0) 2022.06.01
JAVA 백준 1152번 단어의 개수  (0) 2022.06.01

댓글