[BOJ][Java] 2492. ๋ณด์„

2025. 8. 20. 15:39ยท๐Ÿ’ญ Problem Solving/Java

๋ฌธ์ œ

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

 

๋ฌธ์ œ ์ดํ•ด

  • ๊ฐ€๋กœ N, ์„ธ๋กœ M์ธ ์ง€๋„ ์œ„์— ๊ธˆ๊ฐ•์„ T๊ฐœ์˜ ์ขŒํ‘œ (A, B)๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ,
    ๊ฐ€์žฅ ๋งŽ์€ ๊ธˆ๊ฐ•์„์„ ํฌํ•จํ•˜๋Š” ์ •์‚ฌ๊ฐํ˜•์˜ ์ขŒํ‘œ์™€ ํฌํ•จ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
  • ์ •์‚ฌ๊ฐํ˜•์˜ ๋ณ€์˜ ๊ธธ์ด๋Š” K์ด๊ณ , ๊ผญ์ง“์ ์€ ์ •์ˆ˜ ๊ฒฉ์ž์ ์— ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์ •์‚ฌ๊ฐํ˜• ๋ณ€ ์œ„์˜ ๊ธˆ๊ฐ•์„๋„ ํฌํ•จ๋œ ๊ฒƒ์œผ๋กœ ๋ณธ๋‹ค.

 

๋ฌธ์ œ ํ’€์ด

๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ

  • ๋ฒ”์œ„: 1 ≤ N, M ≤ 1,000,000, 1 ≤ T ≤ 100, 1 ≤ K ≤ N, M, 0 ≤ A ≤ N, 0 ≤ B ≤ M
  • N, M์ด ์ตœ๋Œ€ 1e6์ด๋ผ int[N+1][M+1] ๊ฐ™์€ 2์ฐจ์› ๋ฐฐ์—ด ์ƒ์„ฑ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. (TB๊ธ‰ ํ•„์š”)
  • ์™ผ์ชฝ์•„๋ž˜ (x, y)๋ฅผ x=0..N-K, y=0..M-K ์ „ ๋ฒ”์œ„๋กœ ์ „์ˆ˜ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ๋„ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. (์ตœ์•… 1e12 ํ›„๋ณด)

 

๋ณด์„์ด ์žˆ๋Š” ๊ณณ ๊ธฐ์ค€์œผ๋กœ ํƒ์ƒ‰

๋ชจ๋“  ๊ธˆ๊ฐ•์„์„ ์ •์‚ฌ๊ฐํ˜•์˜ ์˜ค๋ฅธ์ชฝ ์œ„ ๋ชจ์„œ๋ฆฌ ํ›„๋ณด๋กœ ์žก๊ณ , ํ•ด๋‹น ์ •์‚ฌ๊ฐํ˜•์— ํฌํ•จ๋˜๋Š” ๊ธˆ๊ฐ•์„ ์ˆ˜๋ฅผ ์„ผ๋‹ค.

  • rightX = gems[i].x, rightY = gems[j].y ์กฐํ•ฉ์„ ๋ชจ๋‘ ์‹œ๋„
  • ์ •์‚ฌ๊ฐํ˜•์ด ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒฝ์šฐ(rightX - K < 0 ๋˜๋Š” rightY - K < 0)์—๋Š” ์ •์‚ฌ๊ฐํ˜•์„ (0,0)์œผ๋กœ ๋ถ™์ธ๋‹ค
  • ๊ฒ€์‚ฌ ๋ฒ”์œ„: [rightX - K .. rightX] × [rightY - K .. rightY]
  • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ „์ˆ˜ ํƒ์ƒ‰ ์—†์ด ํ›„๋ณด ์ˆ˜๋ฅผ O(T^2)๋กœ ์ค„์ด๊ณ ,
    ๊ฐ ํ›„๋ณด์—์„œ ๊ธˆ๊ฐ•์„ T๊ฐœ๋งŒ ์„ธ๋ฉด ๋˜๋ฏ€๋กœ ์ „์ฒด ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(T^3)(์ตœ๋Œ€ 100^3 = 1e6)์ด๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ธˆ๊ฐ•์„ ์ขŒํ‘œ T๊ฐœ๋งŒ ๋ณด๊ด€ํ•˜๋ฏ€๋กœ O(T)์ด๋‹ค.

 

๋ฐ˜๋ก€

์ •์‚ฌ๊ฐํ˜•์ด ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

2 2 1 2
2 1
0 2
1

 

์ฝ”๋“œ

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

public class Main {
    static class Point {
        int x, y;

        Point(int x, int y) {
            this.x = x;
            this.y = y;
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        int t = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());

        Point[] gems = new Point[t];
        for (int i = 0; i < t; i++) {
            st = new StringTokenizer(br.readLine());
            int x = Integer.parseInt(st.nextToken());
            int y = Integer.parseInt(st.nextToken());
            gems[i] = new Point(x, y);
        }

        int maxCount = 0;
        Point ans = null;

        // ๋ชจ๋“  ๊ธˆ๊ฐ•์„์„ ์ •์‚ฌ๊ฐํ˜•์˜ ์˜ค๋ฅธ์ชฝ ์œ„ ๋ชจ์„œ๋ฆฌ๋กœ ์ •ํ•ด์„œ, ํ•ด๋‹น ์ •์‚ฌ๊ฐํ˜•์—์„œ ํฌํ•จ๋˜๋Š” ๊ฐœ์ˆ˜ ์„ธ๊ธฐ
        for (int i = 0; i < t; i++) {
            for (int j = 0; j < t; j++) {
                int rightX = gems[i].x;
                int rightY = gems[j].y;

                // ์ด ์ •์‚ฌ๊ฐํ˜• ์•ˆ์—์„œ ๊ธˆ๊ฐ•์„ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ
                int cnt = 0;
                for (int l = 0; l < t; l++) {
                    int x = gems[l].x;
                    int y = gems[l].y;

                    if (rightX - k < 0) {
                        rightX = k;
                    }

                    if (rightY - k < 0) {
                        rightY = k;
                    }

                    if (rightX - k <= x && x <= rightX && rightY - k <= y && y <= rightY) {
                        cnt++;
                    }
                }

                if (cnt >= maxCount) {
                    maxCount = cnt;
                    ans = new Point(rightX - k, rightY); // ์™ผ์ชฝ ์œ„ ์ขŒํ‘œ ์ €์žฅ
                }
            }
        }

        System.out.println(ans.x + " " + ans.y);
        System.out.println(maxCount);
    }
}

'๐Ÿ’ญ Problem Solving > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ][Java] 14503. ๋กœ๋ด‡ ์ฒญ์†Œ๊ธฐ  (0) 2025.09.03
[SWEA][Java] 3421. ์ˆ˜์ œ ๋ฒ„๊ฑฐ ์žฅ์ธ  (4) 2025.08.29
[BOJ][Java] 1946. ์‹ ์ž… ์‚ฌ์›  (1) 2025.08.26
[BOJ][Java] 16926. ๋ฐฐ์—ด ๋Œ๋ฆฌ๊ธฐ 1  (4) 2025.08.07
[SWEA][Java] 5215. ํ–„๋ฒ„๊ฑฐ ๋‹ค์ด์–ดํŠธ  (4) 2025.07.18
'๐Ÿ’ญ Problem Solving/Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [SWEA][Java] 3421. ์ˆ˜์ œ ๋ฒ„๊ฑฐ ์žฅ์ธ
  • [BOJ][Java] 1946. ์‹ ์ž… ์‚ฌ์›
  • [BOJ][Java] 16926. ๋ฐฐ์—ด ๋Œ๋ฆฌ๊ธฐ 1
  • [SWEA][Java] 5215. ํ–„๋ฒ„๊ฑฐ ๋‹ค์ด์–ดํŠธ
0=2.
0=2.
  • 0=2.
    0=2
    0=2.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (104)
      • ๐Ÿ“‚ Project (2)
        • Paint the City (2)
      • ๐Ÿ’ญ Problem Solving (42)
        • C++ (28)
        • Java (14)
      • ๐Ÿ“ Study (17)
        • React (1)
        • Java (16)
      • ๐Ÿ’ป CS (11)
        • ๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ (2)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (9)
      • ๐Ÿƒ‍โ™€๏ธ Activities (32)
        • Web Front-End Basic Study (6)
        • 42 Cursus (26)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ๊ธ€์“ฐ๊ธฐ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    dynamic programming
    ๋งต
    La Piscine
    git
    makefile
    unity
    42๊ฒฝ์‚ฐ
    VR
    C
    dfs
    ๋ฐฑ์ค€
    knapsack
    CS
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    .h
    BFS
    ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    CSS
    ๋ฐฑํŠธ๋ž˜ํ‚น
    HTML
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ
    java
    react
    ๊ตฌํ˜„
    github
    swea
    ์ •๋ ฌ
    ํŠธ๋ฆฌ
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
0=2.
[BOJ][Java] 2492. ๋ณด์„
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”