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

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

by Wonit 2021. 2. 2.

๋ฌธ์ œ

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

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

ํ•ด๊ฒฐ๋ฒ•

์ด๋ฒˆ ๋ฌธ์ œ๋„ ์ •๋ ฌ ๊ธฐ์ค€ ์žฌ์ •์˜์— ๊ด€ํ•œ ๋ฌธ์ œ์ด๋‹ค.


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


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

์ ‘๊ทผ๋ฒ•

์ด ๋ฌธ์ œ์—์„œ ํ•ต์‹ฌ์€ ๋จผ์ € ๊ฐ€์ž…ํ•œ ์‚ฌ๋žŒ์ด ์•ž์— ์˜ค๋Š” ์ˆœ์„œ์ด๋‹ค.


๊ทธ๋ƒฅ Comparator์„ ์žฌ์ •์˜ ํ•œ๋‹ค๋ฉด ๋‚˜์ด์ˆœ ์ •๋ ฌ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋จผ์ € ๊ฐ€์ž…ํ•œ ์‚ฌ๋žŒ์ด ๋’ค์—์œ„์น˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.


๊ทธ๋ž˜์„œ ๊ฐ€์ž…ํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฐ๊ฐ์˜ id๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  ํ•ด๋‹น id๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‘๋ฒˆ์งธ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์ •๋‹ต ์ฝ”๋“œ

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

    Comparator<Member> myComparator = new Comparator<>() {
      @Override
      public int compare(Member m1, Member m2) {
        if(m1.age > m2.age) {
          return 1;
        } else if(m1.age == m2.age) {
          if(m1.id > m2.id) {
            return 1;
          }else -1;
        } else return -1;
      }
    };
    Arrays.sort(members, myComparator);

    for(int i = 0; i < n; i ++) {
      bw.write(members[i].age + " " + members[i].name + "\n");
    }
    bw.flush();
    bw.close();
  }
}

class Member {
  int age;
  int id;
  String name;

  Member(int age, int id, String name) {
    this.age = age;
    this.id = id;
    this.name = name;
  }
}

ํšŒ๊ณ 

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

๋Œ“๊ธ€