본문 바로가기
PS/BOJ

[자바] 백준 24586 - Code Guessing (boj java)

by Nahwasa 2022. 5. 5.

문제 : boj24586

 

  문제의 조건을 만족하는 경우를 직접 생각해보며 (신중히) 찾아보면 된다.

우선 입력으로 들어올 수 있는 문자열의 모든 경우를 살펴보면 아래와 같다.

  그럼 각각의 경우에 A가 어떤 값이어야 'uniquely determine the two digits on Bob’s cards'라는 조건에 부합하는지 확인해보면 다음과 같다. 이유는 잘 생각해보면 알 수 있다! 저 경우에만 B를 확정적으로 예상할 수 있다.

 

 

코드 : github

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

public class Main {
    private static boolean chk = false;
    private void print(int a, int b) {
        System.out.println(a + " " + b);
        chk = true;
    }
    private void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int p = Integer.parseInt(st.nextToken());
        int q = Integer.parseInt(st.nextToken());
        String str = br.readLine();
        switch (str) {
            case "AABB" : if (q==7)             print(8, 9); break;
            case "ABAB" : if (p==6 && q==8)     print(7, 9); break;
            case "ABBA" : if (p+3==q)           print(p+1, p+2); break;
            case "BAAB" : if (p==2 && q==8)     print(1, 9); break;
            case "BABA" : if (p==2 && q==4)     print(1, 3); break;
            case "BBAA" : if (p==3)             print(1, 2); break;
        }
        if (!chk) System.out.println(-1);
    }

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

댓글