티스토리 뷰

알고리즘

BOJ16675 두 개의 손 java

kkoon9 2022. 2. 16. 09:56

핵심

무조건 이기려면 상대방이 같은 거 낼 경우밖에 없다.

그러므로 조건문을 다양하게 사용해서 분기 처리해줬다.

반례로 R R S R를 통해 비기는 경우까지 확인해주어 문제를 해결하였다.

import java.io.*;
import java.util.*;

class Main {
    static Map<String, String> winMap = new HashMap<>();
    static final String DRAW = "DRAW";

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());

        winMap.put("P", "R");
        winMap.put("R", "S");
        winMap.put("S", "P");

        String ms1 = st.nextToken();
        String ms2 = st.nextToken();
        String tk1 = st.nextToken();
        String tk2 = st.nextToken();

        String ms1Vstk1 = whoWin(ms1, tk1);
        String ms1Vstk2 = whoWin(ms1, tk2);
        String ms2Vstk1 = whoWin(ms2, tk1);
        String ms2Vstk2 = whoWin(ms2, tk2);
        
        if (ms1.equals(ms2) && tk1.equals(tk2) && ms1.equals(tk1)) {
            System.out.println("?");
            return;
        }
        if (ms1.equals(ms2)) {
            if (ms1Vstk1.equals("TK") || ms1Vstk2.equals("TK")) {
                System.out.println("TK");
            } else if(ms1Vstk1.equals("DRAW") || ms1Vstk2.equals("DRAW")){
                System.out.println("?");
            } else {
                System.out.println("MS");
            }
            return;
        }

        if (tk1.equals(tk2)) {
            if (ms1Vstk1.equals("MS") || ms2Vstk1.equals("MS")) {
                System.out.println("MS");
            } else if (ms1Vstk1.equals("DRAW") || ms2Vstk1.equals("DRAW")) {
                System.out.println("?");
            } else {
                System.out.println("TK");
            }
            return;
        }
        System.out.println("?");
    }

    private static String whoWin(String ms, String tk) {
        String msWin = winMap.get(ms);
        String tkWin = winMap.get(tk);

        if (msWin.equals(tk)) {
            return "MS";
        }

        if (tkWin.equals(ms)) {
            return "TK";
        }
        return DRAW;
    }
}

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

BOJ17413 단어 뒤집기 2 java  (0) 2022.02.16
BOJ16956 늑대와 양 java  (0) 2022.02.16
BOJ14620 꽃길 java  (0) 2022.02.14
BOJ10539 수빈이와 수열 java  (0) 2022.02.13
BOJ1987 알파벳 java  (0) 2022.02.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함