본문 바로가기

개발(합니다)/알고리즘&코테

알고리즘 단계별로 풀어보기 : BOJ-2941(크로아티아알파벳)

반응형

문제(출처)

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 

따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.


크로아티아 알파벳 변경

č           c=

ć           c-

          dz=

ñ           d-

lj           lj

nj           nj

š           s=

ž           z=


예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 

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


dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. 

lj와 nj도 마찬가지이다. 

위 목록에 없는 알파벳은 한 글자씩 센다.


입력

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


문제 설명에 나와있는 크로아티아 알파벳만 주어진다.


출력

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


예제 입력1

ljes=njak


예제 출력1

6

예제 입력2

ddz=z=


예제 출력2

3


내 풀이

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

public class Main {
    public static void main(String args[]) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        try {
            String str = br.readLine();
            int result = checkStr(str);
            bw.write(String.valueOf(result));
            bw.flush();
            bw.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static int checkStr(String str) {
        String[] croatia = croatiaStr();
//      크로아티아 문자를 배열로 선언합니다.

        for (int j = 0; j < croatia.length; j++) {
            str = str.replace(croatia[j], "1");
//          해당하는 문자를 1로 치환합니다.
        }
        return str.length();
//      길이를 반환합니다.
    }

    private static String[] croatiaStr() {
        String[] croatia = new String[8];
        croatia[0] = "c=";
        croatia[1] = "c-";
        croatia[2] = "dz=";
        croatia[3] = "d-";
        croatia[4] = "lj";
        croatia[5] = "nj";
        croatia[6] = "s=";
        croatia[7] = "z=";

        return croatia;
    }
}


내 풀이 해석

입력 받은 문자를 크로아티아 문자와 비교하여 같으면 1로 치환합니다.
치환 된 문자열의 길이를 반환합니다.


반응형