본문 바로가기
PS/BOJ

백준 11507 자바 - 카드셋트 (BOJ 11507 JAVA)

by Nahwasa 2022. 2. 25.

문제 : boj11507

 

 

1. 3글자씩 잘라서 각각의 카드를 판단할 수 있어야 함.

  길이가 일정하므로 그냥 character 기준으로 3개씩 잘라내면 된다.

 

2. 똑같은 카드가 존재하는지 판단

  '1'의 문자열을 가지고 HashSet을 사용하면 쉽게 동일 카드가 존재하는지 확인할 수 있다.

 

3. 얼마나 많은 카드를 잃어버렸는지 판단

  '1'의 문자열에서 0번 인덱스의 문자(character)를 가지고 카운팅하면 된다. 즉, 첫번째 문자가 각각 P, K, H, T인 것의 개수를 센다. 이후 13-P개수, 13-K개수, 13-H개수, 13-T개수를 출력해주면 된다.   

 

 

 

코드 : github

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;

public class Main {
    private void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        HashSet<String> hs = new HashSet<>();
        int[] cnt = new int[4];
        for (int i = 0; i < str.length(); i+=3) {
            String cur = str.substring(i, i+3);
            if (hs.contains(cur)) {
                System.out.println("GRESKA");
                return;
            }
            hs.add(cur);

            switch (cur.charAt(0)) {
                case 'P' : cnt[0]++; break;
                case 'K' : cnt[1]++; break;
                case 'H' : cnt[2]++; break;
                case 'T' : cnt[3]++; break;
            }
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 4; i++) {
            sb.append(13-cnt[i]).append(' ');
        }
        System.out.println(sb);
    }

    public static void main(String[] args) throws Exception {
        new Main().solution();
    }
}

댓글