본문 바로가기
Problem Solving/Baekjoon

[백준] 16471 작은 수 내기 - Greedy / Java

by graycode 2023. 7. 15.

 문제 링크

 

16471번: 작은 수 내기

여자친구와 함께 보드게임카페에 간 주언이는, 여러 보드게임을 하며 데이트를 즐겼다. 3시간 커플세트로 결제를 하려던 순간, 주언이는 가격표 옆에 쓰여 있는 새로운 이벤트를 보았다.  바로

www.acmicpc.net

 

 풀이 과정

 

 풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());
        StringTokenizer a = new StringTokenizer(br.readLine());
        StringTokenizer b = new StringTokenizer(br.readLine());

        int[][] arr = new int[2][n];
        for (int i = 0; i < n; i++) {
            arr[0][i] = Integer.parseInt(a.nextToken());
            arr[1][i] = Integer.parseInt(b.nextToken());
        }

        for (int[] row : arr)
            Arrays.sort(row);

        int cnt = 0, idx = 0, win = (n + 1) / 2;
        for (int i = 0; i < n && cnt < win; i++) {
            if (arr[0][idx] < arr[1][i]) {
                cnt++;
                idx++;
            }
        }

        bw.write(cnt < win ? "NO" : "YES");
        bw.flush();
    }

}

댓글