자바알고리즘 - 문자열 - 백준 2941 크로아티아 알파벳

 

문제

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

크로아티아 알파벳변경

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

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

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

 

 

생각

 

1. 문제에서 나온 문자들에 대해서만 if문 처리를 해준다.

2. 단, 만약에 d가 나오면 뒤에 문자가 z인지 z면 그다음문자가 = 인지 확인해야하는데 해당 경우에는 인덱스 범위를 넘어가 버릴 수 있다.

3. 해당 경우 방지를 위해 전체사이즈 -2 가  i 보다 작으면 진행한다는 조건 등이 있어야한다.

 

 

코드

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

public class BackJoon_2941 {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String str = bf.readLine();
        int count =0;
        for(int i=0 ; i<str.length();i++) {
            char ch = str.charAt(i);
            if(ch=='c') {
                if(i<str.length()-1) {
                    if(str.charAt(i+1) == '=') {
                        i++;
                    }
                    else if(str.charAt(i+1)=='-') {
                        i++;
                    }
                }
            }
            else if(ch=='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++;
                    }
                }
            }
            else if(ch == 'l') {
                if(i < str.length() - 1) {
                    if(str.charAt(i + 1) == 'j') { // lj 일 경우
                        i++;
                    }
                }
            }

            else if(ch == 'n') {
                if(i < str.length()- 1) {
                    if(str.charAt(i + 1) == 'j') { // nj 일 경우
                        i++;
                    }
                }
            }

            else if(ch == 's') {
                if(i < str.length() - 1) {
                    if(str.charAt(i + 1) == '=') { // s= 일 경우
                        i++;
                    }
                }
            }

            else if(ch == 'z') {
                if(i < str.length() - 1) {
                    if(str.charAt(i + 1) == '=') { // z= 일 경우
                        i++;
                    }
                }
            }
            count++;
        }
        System.out.println(count);
    }
}

+ Recent posts