๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

[Java] BOJ 7568 ๋ฉ์น˜

by ๐ŸŠ๊ทค๐ŸŠ 2024. 7. 15.

๋ฌธ์ œ 

๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/7568

  • ์–ด๋–ค ์‚ฌ๋žŒ์˜ ๋ชธ๋ฌด๊ฒŒ๊ฐ€ x kg์ด๊ณ  ํ‚ค๊ฐ€ y cm๋ผ๋ฉด ์ด ์‚ฌ๋žŒ์˜ ๋ฉ์น˜๋Š” (x, y)๋กœ ํ‘œ์‹œ๋œ๋‹ค.
  • ๋‘ ์‚ฌ๋žŒ A ์™€ B์˜ ๋ฉ์น˜๊ฐ€ ๊ฐ๊ฐ (x, y), (p, q)๋ผ๊ณ  ํ•  ๋•Œ x > p ๊ทธ๋ฆฌ๊ณ  y > q ์ด๋ผ๋ฉด ์šฐ๋ฆฌ๋Š” A์˜ ๋ฉ์น˜๊ฐ€ B์˜ ๋ฉ์น˜๋ณด๋‹ค "๋” ํฌ๋‹ค"๊ณ  ๋งํ•œ๋‹ค. 
  •  ์˜ˆ๋ฅผ ๋“ค์–ด ์–ด๋–ค A, B ๋‘ ์‚ฌ๋žŒ์˜ ๋ฉ์น˜๊ฐ€ ๊ฐ๊ฐ (56, 177), (45, 165) ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด A์˜ ๋ฉ์น˜๊ฐ€ B๋ณด๋‹ค ํฐ ์…ˆ์ด ๋œ๋‹ค.
  • ๊ทธ๋Ÿฐ๋ฐ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ์น˜๋ผ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ •ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด ๋‘ ์‚ฌ๋žŒ C์™€ D์˜ ๋ฉ์น˜๊ฐ€ ๊ฐ๊ฐ (45, 181), (55, 173)์ด๋ผ๋ฉด ๋ชธ๋ฌด๊ฒŒ๋Š” D๊ฐ€ C๋ณด๋‹ค ๋” ๋ฌด๊ฒ๊ณ , ํ‚ค๋Š” C๊ฐ€ ๋” ํฌ๋ฏ€๋กœ, "๋ฉ์น˜"๋กœ๋งŒ ๋ณผ ๋•Œ C์™€ D๋Š” ๋ˆ„๊ตฌ๋„ ์ƒ๋Œ€๋ฐฉ๋ณด๋‹ค ๋” ํฌ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ฒซ ์ค„์—๋Š” ์ „์ฒด ์‚ฌ๋žŒ์˜ ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์–ด์ง€๋Š” N๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ ์‚ฌ๋žŒ์˜ ๋ชธ๋ฌด๊ฒŒ์™€ ํ‚ค๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์–‘์˜ ์ •์ˆ˜ x์™€ y๊ฐ€ ํ•˜๋‚˜์˜ ๊ณต๋ฐฑ์„ ๋‘๊ณ  ๊ฐ๊ฐ ๋‚˜ํƒ€๋‚œ๋‹ค.
  • ์—ฌ๋Ÿฌ๋ถ„์€ ์ž…๋ ฅ์— ๋‚˜์—ด๋œ ์‚ฌ๋žŒ์˜ ๋ฉ์น˜ ๋“ฑ์ˆ˜๋ฅผ ๊ตฌํ•ด์„œ ๊ทธ ์ˆœ์„œ๋Œ€๋กœ ์ฒซ ์ค„์— ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ๋‹จ, ๊ฐ ๋ฉ์น˜ ๋“ฑ์ˆ˜๋Š” ๊ณต๋ฐฑ๋ฌธ์ž๋กœ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค.

์•„์ด๋””์–ด

  • 2์ฐจ์› ๋ฐฐ์—ด์— ๋ชธ๋ฌด๊ฒŒ์™€ ํ‚ค๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋ฉฐ ๋‘๊ฐœ ๋ชจ๋‘ ํฐ ๊ฒฝ์šฐ๊ฐ€ ๋‚˜์˜ค๋ฉด ์นด์šดํŠธ + 1ํ•œ๋‹ค. 

๊ฒช์€ ์‹œํ–‰์ฐฉ์˜ค

  • ์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ฒŒ ์ดํ•ดํ•ด์„œ ์‹์„ ์—„์ฒญ ๋ณต์žกํ•˜๊ฒŒ ์ ์—ˆ๋‹ค๊ฐ€ ํ‹€๋ฆฌ๊ณ  ๋‚˜์„œ ์™œ ํ‹€๋ ธ๋Š”์ง€ ํ™•์ธํ–ˆ๋‹ค...
  • ์•Œ๊ณ ๋ณด๋‹ˆ ๊ทธ๋ƒฅ ์ž๊ธฐ๋ณด๋‹ค ๋†’์€ ์‚ฌ๋žŒ์ด ๋ช‡๋ช…์žˆ๋Š”์ง€๋งŒ ์ฐพ์œผ๋ฉด ๋˜๋Š” ๋ฌธ์ œ์—ฌ์„œ ๋„ˆ๋ฌด ํ—ˆํƒˆํ–ˆ๋‹ค...ใ…œใ…œ

๋„ˆ๋ฌด ํ—ˆ๋ฌดํ–ˆ๋‹ค...ใ…œใ…œ

์ฝ”๋“œ

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

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

        int N = Integer.parseInt(br.readLine());

        // ์‚ฌ๋žŒ๋“ค์˜ ํ‚ค์™€ ๋ฌด๊ฒŒ๋ฅผ ์ €์žฅํ•  ๋ฐฐ์—ด
        int people[][] = new int[N][2];
        int rank[] = new int[N];

        // ์‚ฌ๋žŒ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต
        for(int i = 0; i < N; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());

            int w = Integer.parseInt(st.nextToken());
            int h = Integer.parseInt(st.nextToken());

            // ๋ฐฐ์—ด์— ๊ฐ’ ์ €์žฅ
            people[i][0] = w;
            people[i][1] = h;

        }

        for(int i = 0; i < N; i++){
            // ์ž๊ธฐ๋ณด๋‹ค ๋†’์€๊ฒŒ ๋ช‡๊ฐœ ์žˆ๋Š”์ง€ ์„ธ๋Š” ๋ณ€์ˆ˜
            int cnt = 1;

            for(int j = 0; j < N; j++){
                // ๊ธฐ์ค€ ๋ชธ๋ฌด๊ฒŒ์™€ ํ‚ค๋ฅผ ๋น„๊ตํ–ˆ์„ ๋•Œ, ๋ชจ๋‘ ํฐ ์‚ฌ๋žŒ์ด ์žˆ๋‹ค๋ฉด
                if((people[i][0] < people[j][0]) && people[i][1] < people[j][1]){
                    // ์นด์šดํŠธ + 1
                    cnt = cnt + 1;
                }
            }

            // ๋žญํฌ ๋ฐฐ์—ด์— ์œ„๋กœ ๋ช‡๋ช…์žˆ๋Š”์ง€ ๊ธฐ๋ก
            rank[i] = cnt;
        }

        for(int i = 0; i < N; i++){
            System.out.print(rank[i] + " ");
        }
    }
}