백준 카드놀이

KIMYEONGJUN·2024년 11월 3일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

입력 파일은 두 개의 줄로 이루어진다.
첫 번째 줄에는 A가 늘어놓은 카드의 숫자들이 빈칸을 사이에 두고 순서대로 주어진다.
두 번째 줄에는 B가 늘어놓은 카드의 숫자들이 빈칸을 사이에 두고 순서대로 주어진다.

첫 번째 줄에는 게임이 끝난 후,
A와 B가 받은 총 승점을 순서대로 빈칸을 사이에 두고 출력한다.
두 번째 줄에는 이긴 사람이 A인지 B인지 결정해서,
이긴 사람을 문자 A 또는 B로 출력한다.
만약 비기는 경우에는 문자 D를 출력한다.

내가 이 문제를 보고 생각해본 부분

동점일 경우 무승부 라운드가 아닌 라운드중 제일 마지막 라운드의 승자가 이번 게임의 승자가 된다.
승자를 저장해줄 문자열 변수를 하나 만들어준다.
두 입력값 중 큰 쪽에 +3점을 해주고,
큰 쪽을 문자열에 저장해준다.
무승부일 경우 문자열은 건들지 않고 점수만 +1씩 해준다.
그렇게 하면 승부가 무승부가 아닐때는 계속 라운드의 승자가 문자열에 저장 된다.
그렇다면 반복문이 끝났을때 문자열에 저장된 값은 무승부가 아닌 라운드중 최종 라운드의 승자가 된다.

코드로 구현

package baekjoon.baekjoon_24;

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

// 백준 2511번 문제
public class Main826 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        StringTokenizer st2 = new StringTokenizer(br.readLine());

        //각 점수를 저장해 줄 변수 선언
        int A = 0;
        int B = 0;
        //무승부가 아닌 승자의 알파벳이 저장될 문자열. 모든 라운드가 동점이면 D가 출력되야 하기에 초기값은 D
        String winner = "D";

        for(int i = 0; i < 10; i++) {
            int N = Integer.parseInt(st.nextToken());
            int M = Integer.parseInt(st2.nextToken());

            if(N > M) {
                winner = "A";
                A += 3;
            } else if(N < M) {
                winner = "B";
                B += 3;
            } else {
                A += 1;
                B += 1;
            }
        }

        if(A > B) {
            System.out.println(A + " " + B);
            System.out.println("A");
        } else if(A < B) {
            System.out.println(A + " " + B);
            System.out.println("B");
        } else {
            System.out.println(A + " " + B);
            System.out.println(winner);
        }
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글