코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍

코딩기록

알고리즘/백준

10814번 : 나이순 정렬

2022. 7. 14. 21:12

 

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

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net

 

 

문제

 

 

코드

import java.io.*;
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));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.parseInt(br.readLine());
        
        String srr[][] = new String[n][2];
        for(int i=0;i<n;i++) {
            String str[] = br.readLine().split(" ");
            srr[i][0] = str[0];
            srr[i][1] = str[1];
        }
        
        Arrays.sort(srr, new Comparator<String[]>() {
            @Override
            public int compare(String[] o1, String[] o2) {
                int a = Integer.parseInt(o1[0]);
                int b = Integer.parseInt(o2[0]);
                return a-b;
            }
        });
        
        for(int i=0;i<n;i++) {
            System.out.println(srr[i][0] + " " + srr[i][1]);
        }
    }
}

 

 

해결방법

나이를 기준으로 정렬하면 되니 Arrays.sort()를 이용하였다. Comparator를 재정의하여 풀었는데 테스트 값은 잘 돌아갔지만 런타임 에러 (IllegalArgument)가 발생했다. 뭐가 잘못된 것인지 알아봤는데 compare(a, a)처럼 같은 값을 비교한다면 항상 0을 반환해주어야 IllegalArgument가 발생하지 않는다고 나온다. 처음 코드를 짤 땐 -1 또는 1이 반환되게 하여서 컴파일 오류가 난 것이다. 잘 정리를 해둬야겠다.

'알고리즘 > 백준' 카테고리의 다른 글

1966번 : 프린터 큐  (0) 2022.07.16
1213번 : 팰린드롬 만들기  (0) 2022.07.15
11659번 : 구간 합 구하기 4  (0) 2022.07.11
16435번 : 스네이크버드  (0) 2022.07.06
11651번 : 좌표 정렬하기 2  (0) 2022.07.06
    '알고리즘/백준' 카테고리의 다른 글
    • 1966번 : 프린터 큐
    • 1213번 : 팰린드롬 만들기
    • 11659번 : 구간 합 구하기 4
    • 16435번 : 스네이크버드
    코딍코딍
    코딍코딍
    ㅎ2

    티스토리툴바