Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 프로그래머스 #잡은 물고기 중 가장 큰 물고기의 길이 구하기 #알고리즘 #mysql #코린이 #개발자 #study
- 백준 #일곱 난쟁이 #2309 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #흉부외과 또는 일반외과 의사 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 백준 #
- 특정 옵션이 포함된 자동차 리스트 구하기 #코린이 #개발자 #study
- 프로그래머스 #mysql #동명 동물 수 찾기 #알고리즘 #코린이 #개발자
- 백준 #네 번째 점 #3009 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #동명 동물 수 찾기 #mysql #데이터베이스 #db #코린이 #개발자 #알고리즘
- 코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #
- 프로그래머스 #조건에 맞는 회원수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #어린 동물 찾기 #코린이 #개발자 #study
- 프로그래머스 #python 개발자 찾기 #알고리즘 #mysql #코린이 #개발자 #study
- 프로그래머스 #mysql #12세 이하인 여자 환자 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #다이얼 #5622 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기의 평균 길이 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #역순 정렬하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #한 해에 잡은 물고기 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #4153 #직각삼각형 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #가장 큰 물고기 10마리 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #이름이 있는 동물의 아이디 #코린이 #개발자 #study
- 프로그래머스 #mysql #경기도에 위치한 식품창고 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #자동차 대여 기록에서 장기/단기 대여 구분하기 #코린이 #개발자 #study
- mysql #min() #max() #최소값 #최대값 #코린이 #개발자 #study
- 프로그래머스 #모음 제거 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #나이 정보가 없는 회원 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #인기있는 아이스크림 #코린이 #개발자 #study
- 프로그래머스 #과일로 만든 아이스크림 고르기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #아픈 동물 찾기 #mysql #알고리즘 #코린이 #개발자 #study
Archives
- Today
- Total
luke
[백준] - 나이순 정렬 (10814) (자바/Java) 본문
https://www.acmicpc.net/problem/10814
문제.
풀이.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
String[][] arr = new String[N][2];
for (int i = 0; i < N; i++) {
arr[i][0] = sc.next(); //나이
arr[i][1] = sc.next(); //이름
}
Arrays.sort(arr, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return Integer.parseInt(o1[0]) - Integer.parseInt(o2[0]);
}
});
for (int i = 0; i < N; i++) {
System.out.println(arr[i][0] + " " + arr[i][1]);
}
}
}
나이순 정렬하기 문제.
이번 문제는 어렵다는 생각이 드는 문제였다...
아마 문제에 접근한 사람들 대부분은 나이순으로 정렬하려고 했을 거라는 생각이 든다.
1. 2차원 배열을 통해 나이, 이름을 입력받는다.
2. 정렬하기 위해 Arrays.sort()에 Comparator 의 compare 메서드를 구현해 정렬한다.
compare 메서드는 양의 정수, 0, 음의 정수 중 하나를 반환해 양의 정수일 경우 두 객체의 위치를 바꿔주는 역할을 한다.
즉 나이순으로 정렬하면서 이름은 따로 비교를 안 한다면 나이순으로 정렬하되, 나이가 같을 경우는 0이 반환되어 입력 순으로 정렬된다.
Comparator 란??
쉽게 말하자면 "자기 자신"과 "상대방"을 비교하는 것이다.
비교했을 때 내가 10이라고 가정해 보자 상대방이 4라고 가정하면 나 자신은 상대방 보다 값이 +6 만큼 크다.
반대로 상대망이 13일 경우 나 자신은 상대방 보다 값이 -2 만큼 작다. 같을 경우는 당연히 0이다.
그래서 위에 2번 설명을 했을대 양수, 음수를 말한 것이다.
그러므로 o1 [0], o2 [0] 번 인덱스에서 비교했을 때 나이만 비교한다.
※ 이해하면서 설명해보려 했지만 많이 부족한 부분이 많습니다. 혹여나 설명이 부족하거나 잘못된 점이 있다면 고치겠습니다!
'알고리즘문제 > 백준 문제(Java)' 카테고리의 다른 글
[백준] - 대표값2 (2587) (자바/Java) (0) | 2024.03.28 |
---|---|
[백준] - 약수들의 합 (9506) (자바/Java) (0) | 2024.03.27 |
[백준] - 그대로 출력하기2 (11719) (자바/Java) (0) | 2024.03.23 |
[백준] - 세로읽기 (10798) (자바/Java) (2) | 2024.03.22 |
[백준] - 팰린드롬인지 확인하기 (10988) (자바/Java) (0) | 2024.03.19 |