suheang

[백준] | JAVA, 자바 | 1524번 - 세준세비 본문

알고리즘

[백준] | JAVA, 자바 | 1524번 - 세준세비

suheang 2024. 5. 18. 23:13

https://www.acmicpc.net/problem/1524


문제 요약 :

세준이는 N명의 병사를 키웠고, 세비는 M명의 병사를 키웠다.

전쟁은 여러 번의 전투로 이루어진다. 각 전투에서 살아있는 병사중 제일 약한 병사가 죽는다. 만약 제일 약한 병사가 여러 명이고, 제일 약한 병사가 모두 같은 편에 있다면, 그 중에 한 명이 임의로 선택되어 죽는다. 하지만, 제일 약한 병사가 여러 명이고, 양 편에 모두 있다면, 세비의 제일 약한 병사 중 한 명이 임의로 선택되어 죽는다.

 

( 전쟁은 한 명의 병사를 제외하고 모두 죽었을 때 끝난다. 전쟁의 승자를 출력하는 프로그램을 작성 )


문제 풀이 :

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

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

        int t = Integer.parseInt(br.readLine());
        for (int i = 0; i < t; i++) {
            br.readLine();
            StringTokenizer st = new StringTokenizer(br.readLine());
            int n = Integer.parseInt(st.nextToken());
            int m = Integer.parseInt(st.nextToken());

            int maxSejun = 0, maxSebi = 0;

            st = new StringTokenizer(br.readLine());
            for (int j = 0; j < n; j++) {
                int sejun = Integer.parseInt(st.nextToken());
                if (maxSejun < sejun) maxSejun = sejun;
            }

            st = new StringTokenizer(br.readLine());
            for (int j = 0; j < m; j++) {
                int sebi = Integer.parseInt(st.nextToken());
                if (maxSebi < sebi) maxSebi = sebi;
            }

            if (maxSejun >= maxSebi) {
                System.out.println("S");
            } else {
                System.out.println("B");
            }
        }
    }
}

 

1. 테스트 케이스의 개수 t 입력받기

2. t 만큼 게임 진행

3. 세준이가 가지고 있는 병사 n 입력받기, 세비가 가지고 있는 병사 m 입력받기

4. 병사의 힘이 가장 강한 값을 저장할 변수 maxSejun, maxSebi 생성

5. n과 m 만큼 병사의 힘을 입력받고 max 값보다 크다면 입력받은 값을 max 값으로 변경

6. 세준이의 병사의 최대 힘이 세비의 병사의 최대 힘보다 크거나 같으면 "S" 출력, 그렇지 않다면 "B" 출력