[JAVA] 크로아티아 알파벳

NoHae·2025년 8월 19일

백준

목록 보기
65/106

문제 출처

단계별로 풀어보기 > 심화 1 > 크로아티아 알파벳
https://www.acmicpc.net/problem/2941

문제 설명

다음과 같이 크로아티아 알파벳에 대한 표가 주어지고, 입력으로 크로아티아 알파벳이 주어질 때, 해당 알파벳이 몇 글자인지 출력하라.

접근 방법

'=', '-', 'j' 가 앞에 문자와 하나로 묶인다는 가정하에 풀이한다.
'='의 경우는 'dz'가 붙는 경우와 'z'가 붙은 경우를 파악하고,
'j'의 경우에는 'n', 'l'이 오는 경우를 파악하여 조건문을 설정한다.

import java.io.*;

public class 크로아티아_알파벳 {

    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 target = br.readLine();

        int num = 0;

        for(int i = 1; i < target.length(); i++){

            char a =target.charAt(i);

            if(a == '-') num++;

            if (a == '=') {
                if(target.charAt(i-1) == 'z'){
                    if( i>=2 && target.charAt(i-2) == 'd') num+=2;
                    else num++;
                    continue;
                }
                num++;
            }

            if (a == 'j'){
                if(target.charAt(i-1) == 'n' || target.charAt(i-1) == 'l') num++;
            }
        }

        bw.write(String.valueOf(target.length()-num));
        bw.flush();
        bw.close();
        br.close();
    }

}

알게된 점

문자열을 순회하면서 조건에 따라서 하나의 문자로 따질 것인지, 여러 문자로 따질 것인지 파악하면 된다.
시간 복잡도는 O(n) 이다.

문제푼 흔적

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글