๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS] ๋ฐฑ์ค€ 11651๋ฒˆ ์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ 2 ์ž๋ฐ” ๋ฌธ์ œ ํ’€์ด

by Wonit 2021. 2. 2.

๋ฌธ์ œ

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ๋ฐฑ์ค€์˜ 11650๋ฒˆ ์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ ์˜ ์ ‘๊ทผ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค.
์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•ด๋ณด์ž.

ํ•ด๊ฒฐ๋ฒ•

์ด๋ฒˆ ์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ ๋ฌธ์ œ๋Š” ๊ธฐ๋ณธ์ ์ธ ์ •๋ ฌ ๋ฌธ์ œ์™€ ์กฐ๊ธˆ ์„ฑ๊ฒฉ์ด ๋‹ค๋ฅธ ๋ฌธ์ œ์ด๋‹ค.


๋ณดํ†ต ์ด๋Ÿฐ ๊ตฌํ˜„ ๋ฌธ์ œ๋ฅผ ์ •๋ ฌ ๊ธฐ์ค€ ๋ณ€๊ฒฝํ•˜๊ธฐ, ์ •๋ ฌ ๊ธฐ์ค€ ๋ฐ”๊พธ๊ธฐ, ์ •๋ ฌ ๊ธฐ์ค€ ์žฌ์ •์˜๋ผ๋Š” ํƒ€์ดํ‹€์ด๋ผ๊ณ  ํ•œ๋‹ค.


๋‚ด๊ฐ€ ๊ฒฝํ—˜ํ–ˆ๋˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ๋„ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์˜ ๋ฌธ์ œ๋ฅผ ๋ช‡๋ฒˆ ๋งˆ์ฃผํ•œ ์ ์ด ์žˆ์—ˆ๋‹ค.


๋ฌผ๋ก  ์ด๋Ÿฐ์‹์œผ๋กœ ๋Œ€๋†“๊ณ  ์ •๋ ฌ ๊ธฐ์ค€์„ ๋ฐ”๊พธ์„ธ์š”! ๋ผ๊ณ  ํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.


๋Œ€์ถฉ ๋ฌธ์ œ๋ฅผ ๋ณด๋‹ค๊ฐ€ ์•„~ ์ด๊ฑด ๊ฐ์ฒด๋ผ๋ฆฌ ์ผ๋ฐ˜์  ์ •๋ ฌ ๋ง๊ณ  ๋‹ค๋ฅธ ์ •๋ ฌ์„ ํ•˜๊ณ  ๋กœ์ง์„ ๋Œ๋ฆฌ๋ฉด ๋” ๋น ๋ฅด๊ฒ ๋‹ค ํ•˜๋Š” ๊ฒƒ์ด ๋Œ€๋ถ€๋ถ„์ด์—ˆ๋‹ค.

 

์ด ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž๋ฐ”์˜ Comparator์„ ์•Œ์•„์•ผ ํ•œ๋‹ค.

 

๋งŒ์•ฝ Comparator๊ณผ Comparable์— ๋Œ€ํ•ด์„œ ์•Œ์ง€ ๋ชปํ•œ๋‹ค๋ฉด Java์—์„œ Comparator๋กœ ์ •๋ ฌ ๊ธฐ์ค€ ๋ฐ”๊พธ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ ‘๊ทผ๋ฒ•

์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ด๋‹ค.

  1. Point ํด๋ž˜์Šค ์ƒ์„ฑ
  2. ์ž…๋ ฅ ์ฒ˜๋ฆฌ
  3. MyComparator ๊ตฌํ˜„
  4. Arrays.sort
  5. ์ถœ๋ ฅ ์ฒ˜๋ฆฌ

์ •๋‹ต ์ฝ”๋“œ

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());
        Point[] points = new Point[n];
        for (int i = 0; i < n; i++) {
            String[] xy = br.readLine().split(" ");
            points[i] = new Point(
                    Integer.parseInt(xy[0]),
                    Integer.parseInt(xy[1]));
        }

        Comparator<Point> myComparator = new Comparator<Point>() {
            @Override
            public int compare(Point p1, Point p2) {
                if(p1.y > p2.y) {
                    return 1;
                }else if (p1.y == p2.y){
                    if(p1.x > p2.x) {
                        return 1;
                    }else return -1;
                }
                return -1;
            }
        };

        Arrays.sort(points, myComparator);

        for (int i = 0; i < n; i++) {
            bw.write(points[i].x + " " + points[i].y + "\n");
        }
        bw.flush();
        bw.close();
    }
}

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

ํšŒ๊ณ 

์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€