์šฐ๊ทœ์ด์ธ์šฐ์œค
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 ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค
๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป PS/JAVA

[JAVA] ๋ฐฑ์ค€ 11650๋ฒˆ ใ€์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐใ€‘

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป PS/JAVA

[JAVA] ๋ฐฑ์ค€ 11650๋ฒˆ ใ€์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐใ€‘

2022. 10. 3. 12:11


์ด ๋ฌธ์ œ๋Š”, ๋‹จ์ˆœํžˆ 1์ฐจ์› ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์ด ์•„๋‹Œ,

 

x์ขŒํ‘œ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ y์ขŒํ‘œ๋„ ๋น„๊ตํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, sort ํ•จ์ˆ˜์˜ ์ •๋ ฌ ์กฐ๊ฑด์„ ๋ณ€๊ฒฝ์‹œ์ผœ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

 

[JAVA] Comparator ์™€ Comparable์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ธฐ

๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ Arrays ๋ฅผ import ํ•ด์ค€ ๋’ค, Arrays์˜ sort ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•Œ์•„์„œ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ํ•ด์ค€๋‹ค! sort ๋ฉ”์„œ๋“œ๋Š” Comparable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ Arrays ํด๋ž˜์Šค์—์„œ ๊ตฌํ˜„ํ•˜์—ฌ ๋™

yinq.tistory.com

 

๋งˆ์นจ ์ตœ๊ทผ์—, ํ•œ ๋ฐฑ์—”๋“œ ์Šค์ฟจ ๋™๊ธฐ๋ถ„ ๋•๋ถ„์— Comparator ์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ํ•œ ์ƒํƒœ๋ผ์„œ ์ˆ˜์›”ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

๋จผ์ €, Arrays.sort(int [][] array) ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ sort ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—

 

๋’ค์— Comparator ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  compare ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์„œ ์ •ํ™•ํ•œ ์ •๋ ฌ ๊ธฐ์ค€์„ ์ œ๊ณตํ•ด์ฃผ์–ด์•ผ ๋ฉ”์„œ๋“œ๊ฐ€ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์ฐธ๊ณ ๋กœ ์ขŒํ‘œ๋ฅผ ๊ธฐ๋กํ•  ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ๋•Œ primitive ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค๋ฉด ์•ˆ๋œ๋‹ค.

 

compare ๋ฉ”์„œ๋“œ๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ์„œ object๋ฅผ ์ทจ๊ธ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๋”ฐ๋ผ์„œ int [][] array ๊ฐ€ ์•„๋‹Œ Integer [][] array ๋กœ ์ƒ์„ฑํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

 

 

๋งŒ์•ฝ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ, -1 1 ์ขŒํ‘œ๊ฐ€ ๋“ค์–ด์™”๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์„ ๋•Œ,

 

array[0][0] = -1

array[0][1] = 1  ๋กœ ๊ธฐ๋กํ•  ๊ฒƒ์ด๊ณ 

 

๋‘๋ฒˆ์งธ ์ธ์ž๋กœ 2,2 ์ขŒํ‘œ๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ,

 

array[1][0] = 2

array[1][1] = 2 ๊ฐ€ ๊ธฐ๋ก๋  ๊ฒƒ์ด๋‹ค.

 

์ฆ‰ array[i][0] ์€ i ๋ฒˆ์งธ๋กœ ์ž…๋ ฅ๋œ ์ขŒํ‘œ์˜ x์ขŒํ‘œ์ด๊ณ  

array[i][1] ์€ i ๋ฒˆ์งธ๋กœ ์ž…๋ ฅ๋œ ์ขŒํ‘œ์˜ y์ขŒํ‘œ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

 

 

class CustomComparator implements Comparator<Integer[]> {
	@Override
	public int compare(Integer[] a1, Integer[] a2) {
		if (a1[0].equals(a2[0])) {
			return a1[1] - a2[1];
		}
		return a1[0] - a2[0];
	}
}

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€, ์ง€๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•ด์„œ Integer[] ๋งŒ ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด๋‘์—ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

compare ๋ฉ”์„œ๋“œ์—์„œ ๋ฐ›๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜, ์ฆ‰ ๋น„๊ต ๋Œ€์ƒ๋„ Integer[] ๋กœ ์ž…๋ ฅ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  a1[0] , ์ฆ‰ ์–ด๋–ค ์ขŒํ‘œ์˜ x์ขŒํ‘œ์™€ a2[0] , ๋‹ค๋ฅธ ์ขŒํ‘œ์˜ x์ขŒํ‘œ๊ฐ€ ๊ฐ™๋‹ค๋ฉด, 

 

a1[1] - a2[1] , ์ฆ‰ ๋‘ ์ขŒํ‘œ์˜ y์ขŒํ‘œ ๊ฐ’์˜ ์ฐจ์ด๊ฐ€ ๋ฐ˜ํ™˜๋˜๊ณ ,

 

์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์ด๋ฏ€๋กœ a1์˜ y์ขŒํ‘œ๊ฐ€ ๋” ํฌ๋‹ค๋ฉด, ์–‘์ˆ˜๊ฐ’์ด ๋ฐ˜ํ™˜๋˜์–ด ๋‘ ๊ฐ์ฒด์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊ฟ€ ๊ฒƒ์ด๋‹ค.

 

์กฐ๊ฑด๋ฌธ์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋ฉด 

 

a1[0] - a2[0] ์ด ๋ฐ˜ํ™˜๋˜์–ด, ์ด ๊ฒฝ์šฐ ์—ญ์‹œ a1์˜ x์ขŒํ‘œ๊ฐ€ ๋” ํฌ๋‹ค๋ฉด ์–‘์ˆ˜๊ฐ’์ด ๋ฐ˜ํ™˜๋˜์–ด ๋‘ ์œ„์น˜๋ฅผ ๋ฐ”๊ฟ€ ๊ฒƒ์ด๋‹ค.

 

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

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int N = Integer.valueOf(br.readLine());
		Integer[][] array = new Integer[N][2];
        
		
		for (int i = 0; i < N; i++) {
			String[] input = br.readLine().split(" ");
			array[i][0] = Integer.valueOf(input[0]);
			array[i][1] = Integer.valueOf(input[1]);
		}
        
        
		//array[i][0] ์€ i ๋ฒˆ์งธ๋กœ ์ž…๋ ฅ๋œ ์ขŒํ‘œ์˜ x์ขŒํ‘œ์ด๊ณ  
        //array[i][1] ์€ i ๋ฒˆ์งธ๋กœ ์ž…๋ ฅ๋œ ์ขŒํ‘œ์˜ y์ขŒํ‘œ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.	
		
//		System.out.println(Arrays.deepToString(array));
		Arrays.sort(array, new CustomComparator());
        //CustomComparator ๊ฐ์ฒด๋ฅผ ๋ถˆ๋Ÿฌ์™”๋‹ค.
        
//		System.out.println(Arrays.deepToString(array));
		
		
		for (int i = 0; i < N; i++) {
			sb.append(array[i][0]).append(" ").append(array[i][1]).append("\n");
		}
		System.out.println(sb);
	}
}

class CustomComparator implements Comparator<Integer[]> {
	@Override
	public int compare(Integer[] a1, Integer[] a2) {
		if (a1[0].equals(a2[0])) {
			return a1[1] - a2[1];
		}
		return a1[0] - a2[0];
	}
}

 

๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ํ’€์ด๋ฅผ ๋ดค๋Š”๋ฐ, ๋žŒ๋‹ค์‹์„ ์ด์šฉํ•ด์„œ ํ•ด๊ฒฐํ•œ ์‚ฌ๋žŒ๋“ค์ด ๋Œ€๋ถ€๋ถ„์ด์—ˆ๋‹ค.

 

์•„์ง ๋žŒ๋‹ค์‹์— ์ต์ˆ™์น˜ ๋ชปํ•ด์„œ, ์ƒ๊ฐ์„ ๋ชปํ–ˆ๋Š”๋ฐ, ๋‹ค์Œ ๋ฌธ์ œ๋ถ€ํ„ฐ๋Š” ๋žŒ๋‹ค์‹๋„ ์ƒ๊ฐํ•ด๋ด์•ผ๊ฒ ๋‹ค.

    '๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป PS/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [JAVA] ๋ฐฑ์ค€ 10814๋ฒˆ ใ€๋‚˜์ด์ˆœ ์ •๋ ฌใ€‘
    • [JAVA] ๋ฐฑ์ค€ 11651๋ฒˆ ใ€์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ 2ใ€‘
    • [JAVA] ๋ฐฑ์ค€ 2751๋ฒˆ ใ€์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 2ใ€‘
    • [JAVA] ๋ฐฑ์ค€ 11052๋ฒˆ ใ€์นด๋“œ ๊ตฌ๋งคํ•˜๊ธฐใ€‘
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

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

    ๋‹จ์ถ•ํ‚ค

    ๋‚ด ๋ธ”๋กœ๊ทธ

    ๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
    Q
    Q
    ์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
    W
    W

    ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

    ๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
    E
    E
    ๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
    C
    C

    ๋ชจ๋“  ์˜์—ญ

    ์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
    S
    S
    ๋งจ ์œ„๋กœ ์ด๋™
    T
    T
    ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
    H
    H
    ๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
    Shift + /
    โ‡ง + /

    * ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.