์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/JAVA

[JAVA] ๋ฐฑ์ค€ 18869๋ฒˆ ใ€G5.๋ฉ€ํ‹ฐ๋ฒ„์Šค โ…กใ€‘

2023. 8. 14. 09:19

๋ฌธ์ œ

 

 

18869๋ฒˆ: ๋ฉ€ํ‹ฐ๋ฒ„์Šค โ…ก

M๊ฐœ์˜ ์šฐ์ฃผ๊ฐ€ ์žˆ๊ณ , ๊ฐ ์šฐ์ฃผ์—๋Š” 1๋ถ€ํ„ฐ N๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ง„ ํ–‰์„ฑ์ด N๊ฐœ ์žˆ๋‹ค. ํ–‰์„ฑ์˜ ํฌ๊ธฐ๋ฅผ ์•Œ๊ณ  ์žˆ์„๋•Œ, ๊ท ๋“ฑํ•œ ์šฐ์ฃผ์˜ ์Œ์ด ๋ช‡ ๊ฐœ์ธ์ง€ ๊ตฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๊ตฌ์„ฑ์ด ๊ฐ™์€๋ฐ ์ˆœ์„œ๋งŒ ๋‹ค๋ฅธ ์šฐ์ฃผ์˜ ์Œ

www.acmicpc.net


ํ’€์ด

 

์œ„ ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ขŒํ‘œ ์••์ถ•์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

 

์ขŒํ‘œ ์••์ถ•์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ํ•˜๋‚˜ ํ’€์–ด๋ณด๋ฉด ์ข‹๋‹ค.

 

 

18870๋ฒˆ: ์ขŒํ‘œ ์••์ถ•

์ˆ˜์ง์„  ์œ„์— N๊ฐœ์˜ ์ขŒํ‘œ X1, X2, ..., XN์ด ์žˆ๋‹ค. ์ด ์ขŒํ‘œ์— ์ขŒํ‘œ ์••์ถ•์„ ์ ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค. Xi๋ฅผ ์ขŒํ‘œ ์••์ถ•ํ•œ ๊ฒฐ๊ณผ X'i์˜ ๊ฐ’์€ Xi > Xj๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ขŒํ‘œ Xj์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. X1, X2, ..., XN์—

www.acmicpc.net

 

์ขŒํ‘œ ์••์ถ•์„ ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

 

์ฆ‰, ํŠน์ • ๋ฐฐ์—ด์˜ ์›์†Œ๋งˆ๋‹ค ๊ทธ ์›์†Œ๋ณด๋‹ค ์ž‘์€ ์›์†Œ๊ฐ€ ๋ช‡๊ฐœ์ธ์ง€(์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ )๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

1000 ๋ณด๋‹ค ์ž‘์€ ์›์†Œ๋Š” 999 ํ•œ ๊ฐœ ์ด๋ฏ€๋กœ 1000์— ํ•ด๋‹นํ•˜๋Š” ์œ„์น˜๋Š” 1 ๋กœ ๋ณ€๊ฒฝ๋˜๊ณ 

 

999๋ณด๋‹ค ์ž‘์€ ์›์†Œ๋Š” ์—†์œผ๋ฏ€๋กœ 999์— ํ•ด๋‹นํ•˜๋Š” ์œ„์น˜๋Š” 0์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.

 

๐Ÿ’ก ์ขŒํ‘œ ์••์ถ•์€ ์–ด๋ ต๊ฒŒ ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†๋Š”๊ฒŒ, 

๋ฐฐ์—ด์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ์ •๋ ฌ์‹œํ‚จ๋‹ค์Œ ์ด๋ถ„ํƒ์ƒ‰ํ•ด์„œ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•˜๋ฉด

๊ทธ ๊ฐ’์ด ํ•ด๋‹น ์›์†Œ๋ณด๋‹ค ์ž‘์€ ์›์†Œ์˜ ๊ฐœ์ˆ˜์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

๊ทธ๋Ÿฌ๋ฉด ๋ฉ€ํ‹ฐ๋ฒ„์Šค ๋ฌธ์ œ์˜ ์˜ˆ์ œ์— ์ ์šฉํ•ด๋ณด์ž.

 

 

 

๊ฐ ์šฐ์ฃผ๋ฅผ ์ขŒํ‘œ์••์ถ•ํ•œ ๊ฒฐ๊ณผ๋Š” ์œ„์™€ ๊ฐ™๋‹ค.

 

์ขŒํ‘œ ์••์ถ•์„ ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™์„ ๋•Œ, ๊ท ๋“ฑํ•œ ์šฐ์ฃผ์ž„์„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋”ฐ๋ผ์„œ, ์šฐ๋ฆฌ๊ฐ€ ํ•ด์•ผํ•  ๊ฒƒ์€

 

๊ฐ ์šฐ์ฃผ๋ฅผ ์ขŒํ‘œ์••์ถ•ํ•œ ๋ฐฐ์—ด์„ ์ €์žฅํ•˜๊ณ , ๋ฐฐ์—ด๋ผ๋ฆฌ equals() ํ•œ์ง€ ๋น„๊ตํ•˜๊ณ  ๊ฐ™๋‹ค๋ฉด ํ•˜๋‚˜์”ฉ ์นด์šดํŠธ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค!

 

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


public class Main {
    int M;
    int N;
    int[][] spaces;
    public static void main(String[] args) throws IOException {
        new Main().sol();
    }

    private void sol() throws IOException {
        setUp();

        // ๊ฐ ์šฐ์ฃผ๋ฅผ ์ขŒํ‘œ ์••์ถ•์„ ํ•œ๋‹ค.
        for (int[] space : spaces) {
            compress(space);
        }

        System.out.println(getCnt());

    }

    private void setUp() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] input = br.readLine().split(" ");
        M = Integer.parseInt(input[0]);
        N = Integer.parseInt(input[1]);
        spaces = new int[M][N];
        for (int i = 0; i < M; i++) {
            input = br.readLine().split(" ");
            for (int j = 0; j < N; j++) {
                spaces[i][j] = Integer.parseInt(input[j]);
            }
        }
    }



    private void compress(int[] space) {
        int[] cloned = space.clone();
        // ์ด๋ถ„ ํƒ์ƒ‰์„ ์œ„ํ•œ ์ค‘๋ณต ์ œ๊ฑฐ์™€ ์ •๋ ฌ ์ž‘์—…
        int[] arr = Arrays.stream(cloned).sorted().distinct().toArray();

        for (int i = 0; i < N; i++) {
            // Java ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ด๋ถ„ํƒ์ƒ‰ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค.
//            space[i] = Arrays.binarySearch(arr, space[i]);
            space[i] = bs(arr, space[i]);
        }

    }

    private int bs(int[] arr, int target) {
        int left = 0, right = arr.length;
        while (left < right) {
            int mid = (left + right) / 2;
            if (target <= arr[mid]) {
                right = mid;
            } else {
                left = mid + 1;
            }
        }
        return left;
    }


    private int getCnt() {
        int cnt = 0;
        for (int i = 0; i < M-1; i++) {
            for (int j = i+1; j < M; j++) {
                if (Arrays.equals(spaces[i], spaces[j])) {
                    cnt++;
                }
            }
        }
        return cnt;
    }


}
    '๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [JAVA] ๋ฐฑ์ค€ 2143๋ฒˆ ใ€G3.๋‘ ๋ฐฐ์—ด์˜ ํ•ฉใ€‘
    • ๋ฌธ์ž์—ด ์ˆ˜์‹ ๊ณ„์‚ฐํ•˜๋Š” ๋ฉ”์„œ๋“œ ๋งŒ๋“ค๊ธฐ
    • [JAVA] 2021 KAKAO BLIND RECRUITMENT ใ€ํ•ฉ์Šน ํƒ์‹œ ์š”๊ธˆใ€‘
    • [JAVA] 2021 ์นด์นด์˜ค ์ฑ„์šฉ์—ฐ๊ณ„ํ˜• ์ธํ„ด์‹ญ ใ€๊ฑฐ๋ฆฌ๋‘๊ธฐ ํ™•์ธํ•˜๊ธฐใ€‘
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

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