크로아티아 알파벳(2941)

크로아티아 알파벳의 개수를 세는 문제

문제

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

크로아티아 알파벳
변경

č

c=

ć

c-

dz=

đ

d-

lj

lj

nj

nj

š

s=

ž

z=

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

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

입력

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

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

출력

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

예제 입력

ljes=njak

예제 출력

6

예제 입력2

ddz=z=

예제 출력2

3

예제 입력3

nljj

예제 출력3

3

예제 입력4

c=c=

예제 출력4

2
import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        int count = 0;
        for(int i=0; i<s.length(); i++){
            if(s.charAt(i) == 'c'){
                if(i < s.length()-1){
                    if(s.charAt(i+1) == '='){
                        i++;
                    }else if(s.charAt(i+1) == '-'){
                        i++;
                    }
                }
            }else if(s.charAt(i) == 'd'){
                if(i<s.length()-1){
                    if(s.charAt(i+1) == 'z'){
                        if(i<s.length()-2){
                            if(s.charAt(i+2) == '='){
                                i+=2;
                            }
                        }
                    }else if(s.charAt(i+1) == '-'){
                        i++;
                    }
                }
            }else if(s.charAt(i) == 'l'){
                if(i<s.length()-1){
                    if(s.charAt(i+1) == 'j'){
                        i++;
                    }
                }
            }else if(s.charAt(i) == 'n'){
                if(i<s.length()-1){
                    if(s.charAt(i+1) =='j'){
                        i++;
                    }
                }
            }else if(s.charAt(i) == 's'){
                if(i<s.length()-1){
                    if(s.charAt(i+1) == '='){
                        i++;
                    }
                }
            }else if(s.charAt(i) == 'z'){
                if(i<s.length()-1){
                    if(s.charAt(i+1) == '='){
                        i++;
                    }
                }
            }
            count++;
        }
        System.out.println(count);

    }
}

string.contains()함수를 활용해볼려고 했지만 잘 안됬음

https://st-lab.tistory.com/68 여기서 또다시 도움을 받게되었다...

  • 예외 처리를 위해서 if문을 돌때 s.length-1 라는 조건문을 추가해줬고 만약 dz= 처럼 3자리 숫자면 =를 확인할 때 s.length-2라는 조건문을 추가

  • 문자열을 확인하는 과정에서 크로아티아문자에 해당하는 문자를 확인하고 나서는 i에 값을 더해줌으로써 다음 문자를 확인하는 과정이다

---팁---

코드를 짤 때 한 번에 완성이 안되면

  1. 큰 틀 부터 하나씩 짠다

  2. 예외가 발생하는 경우를 쭉 나열한다

  3. 예외를 처리하고 및 극단적인 경우의 값을 넣어 디버깅 해본다

이 방법3가지를 생각해보면서 진행해보자

Last updated

Was this helpful?