[Algorithm Study] 백준 2941

SeokHwan An·2022년 7월 16일
0

문제 출처 : https://www.acmicpc.net/problem/2941

문제 정리

  1. 크로아티아 알파벳 변경 문자에 대해 배열을 하나 만든다.
  2. 주어진 문자열을 탐색하며 기본적으로는 2개씩 자르며 위의 배열에 존재하는지 파악하고 dz인 경우에는 3개로 잘라 확인하는 과정을 거친다.
  3. 위의 과정을 거쳐 도출되는 결과 값(크로아티아 문자의 개수)을 출력한다.

위의 문제를 해결하기 위해서 사용한 메소드는 substring()메소드 입니다. substring()은 문자열을 슬라이싱 해주는 메소드로 substring(int index)와 substring(int start, int end) 두가지가 있습니다. substring(int index)의 경우 index부터 문자열 끝까지 반환해주는 메소드이고 substring(int start, int end)의 겨우 문자열의 인덱스가 start부터 end - 1까지 반환해주는 메소드 입니다.

소스 코드

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

public class Main {
    static String[] cro = {"c=","c-","dz=","d-","lj","nj","s=","z="};
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        int answer = 0;
        for(int i = 0; i < str.length(); i++){
            if(i >= str.length()-1){
                answer += 1;
                break;
            }
            String check = str.substring(i,i+2);
            // dz=인 경우
            if(check.equals("dz")){
                if(i == str.length()-2){
                    answer +=2;
                    break;
                }
                check = str.substring(i,i+3);
                if(contains(cro,check)){
                    answer += 1;
                    i += 2;
                    continue;
                }
            }
            // 크로아티아어 포함된 경우
            if(contains(cro,check)){
                answer += 1;
                i+=1;
            }
            else{
                answer += 1;
            }
        }
        System.out.println(answer);
    }
    public static boolean contains(String[] cro, String check){
        return Arrays.asList(cro).contains(check);
    }
}

0개의 댓글