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
- documentationpluginsbootstrapper
- 이산수학
- 프로그래머스
- Eclipse
- dockercompose
- 호석이두마리치킨
- 자바
- 21278
- to display the conditions report re-run your application with 'debug' enabled
- CMD
- 소가길을건너간이유6
- 20055
- 별자리 만들기
- 투에모스문자열
- jenkins
- 백준
- Error fetching remote repo 'origin'
- 알고리즘
- SpringBoot
- docker
- 2108_통계학
- 18222
- EC2
- Error
- Java
- 날짜일수
- 2167. 2차원 배열의 합
- 설정
- 이클립스
- 14466
Archives
- Today
- Total
계단을 오르듯이
1431. 시리얼 번호 본문
시리얼 번호는 배열을 아는 것이 핵심!!!!! 이거면 끝이다.
* comparable vs compator
두 개의 방법을 적절한 곳에 적용하면 된다.
implements Comparable<> vs new Comparator<>()
compareTo(o1) vs compare(o1,o2) 의 차이를 나타내고 정렬에 대해 정리하며 완벽하게 구현할 수 있는지 알아보는 문제였다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | package november.second; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Comparator; public class B_1431_시리얼번호 { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int N = Integer.parseInt(in.readLine()); String[] arr = new String[N]; for (int i = 0; i < N; i++) { arr[i] = in.readLine(); } Arrays.sort(arr, new Comparator<String>() { @Override public int compare(String o1, String o2) { if (o1.length() == o2.length()) { // 길이가 안되면 // 2. 숫자만의 합으로 int len = o1.length(); // 길이가 같으므로 int sum1 = 0; int sum2 = 0; for (int i = 0; i < len; i++) { int num = o1.charAt(i) - '0'; if (num >= 0 && num <= 9) sum1 += num; num = o2.charAt(i) - '0'; if (num >= 0 && num <= 9) sum2 += num; } if (sum1 == sum2) { // 숫자의 합이 안되면 // 3. 사전순 (숫자 -> 알파벳) return o1.compareTo(o2); } return Integer.compare(sum1, sum2); // 2. 숫자만의 합 } return Integer.compare(o1.length(), o2.length()); // 1. 길이 } }); for (int i = 0; i < N; i++) { sb.append(arr[i] + "\n"); } System.out.println(sb); } } | cs |
'알고리즘 > 백준_JAVA' 카테고리의 다른 글
2512. 예산 (0) | 2022.01.10 |
---|---|
1520. 내리막 길 (0) | 2022.01.10 |
14502. 연구소 (0) | 2022.01.09 |
2573. 빙산 (0) | 2022.01.09 |
17135. 캐슬디펜스 (0) | 2022.01.06 |