[백준] 2941 - 크로아티아 알파벳

2020. 9. 10. 13:06알고리즘/Baekjoon

728x90

백준링크 : 바로가기

#String #StartsWith #substring

문제 풀이

배열과 반복문으론 풀 수 없었던 문제. 풀이를 보고서야 String 메서드 StartsWith을 사용해야함을 알 수 있었다. 문자열이 입력한 문자로 시작하면 true를 반환하는 boolean 타입 메서드다. 로직은 true로 반환됐을 때 substring으로 문자열을 잘라주었고, false의 경우 1글자만 substring으로 잘라줬다. 크로아티아 글자 수 count 변수 croCnt엔 한 번 돌 때마다 ++ 해줬다.

중첩 반복문을 사용했다. 처음엔 for문 2개를 썼지만 code의 길이가 일정하지 않기 때문에 조건을 넣을 수 있는 while문에 code.length > 0 을 stop 조건으로 뒀다. 

기억하자

substring 했을 때 시작 index는 0이다.

++과 + 1은 엄연히 다르다.

package baekJoon.week7;

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

public class CroatiaAlpha_2941_ex {

    static String code;
    static String[] croAlphas;
    static int croCnt = 0;
    static int codeIdx = 0;
    static boolean flag;

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        code = br.readLine();
        croAlphas = new String[]{"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};

        while (codeIdx < code.length()) {

            flag = false;

            for (int j = 0; j < croAlphas.length; j++) {

                if (code.startsWith(croAlphas[j])) {

                    croCnt++;
                    flag = true;
                    code = code.substring(codeIdx + croAlphas[j].length(), code.length());
                    break;
                }
            }

            if (!flag) {

                croCnt++;
                code = code.substring(codeIdx + 1 , code.length());
            }
        }

        System.out.println(croCnt);


    }
}

'알고리즘 > Baekjoon' 카테고리의 다른 글

[백준] 2775 - 부녀회장이 될테야  (0) 2020.09.18
[백준] 2292 - 벌집  (0) 2020.09.14
[백준] 1316 - 그룹 단어 체커  (0) 2020.09.09
[백준] 11654 - 아스키 코드 변환  (0) 2020.09.02
[백준] 1065 - 한수  (0) 2020.09.01