알고리즘 스터디 (크로아티아 알파벳[백준 2941])

박윤택·2022년 7월 19일
1

알고리즘

목록 보기
22/25

문제

크로아티아 알파벳 - 실버5


문제 이해

  • 문제에서 제시한 크로아티아 알파벳 정보를 Set에 저장한다.
  • 입력받은 문자열에서 해당 부분이 있는지 찾고 개수를 센다
    - 이때 문자열의 길이가 가장 긴 값부터 있는지 확인한다.

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;

public class BaekJoon_2941 {
  static Set<String> candidate = new HashSet<>(
      Set.of("c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="));
  static StringBuffer str;
  static int count;

  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    str = new StringBuffer(st.nextToken());

    while (str.length() != 0) {
      if (str.length() >= 3 && candidate.contains(str.substring(0, 3))) {
        str = new StringBuffer(str.substring(3));
      } else if (str.length() >= 2 && candidate.contains(str.substring(0, 2))) {
        str = new StringBuffer(str.substring(2));
      } else {
        str = new StringBuffer(str.substring(1));
      }

      count++;
    }
    System.out.println(count);
  }
}

코드 설명

  1. 크로아티아 문자를 담고 있을 Set을 선언하고 문자열을 입력받는다.
  2. 문자열의 길이가 0이 아닐때 계속 반복한다.
    2.1 길이가 가장 긴 값부터 검색하며 Set에 해당 문자가 있는지 확인하고 문자열을 계속 바꿔준다.

1년 전에 python으로 해결했는지도 모르고 java로 다시 해결해보았다.


0개의 댓글