728x90

<오늘의 학습 키워드>
- 정렬
<오늘의 문제>
제목 : 백준 / 실버4 / 1744번 숫자놀이
https://www.acmicpc.net/problem/1755
<풀이>
정답은 더보기
더보기
package BOJ.정렬.숫자놀이_1755.insub2004_211127;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static String[] array = new String[]{"zero","one","two","three","four","five","six","seven","eight","nine"};
public static Map<String, Integer> maps = new HashMap<>();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
for (int i = N; i <= M; i++) {
String stringNumber = String.valueOf(i);
if (stringNumber.length() == 1) {
maps.put(array[i], i);
} else {
String firstNumber = String.valueOf(stringNumber.charAt(0));
String secondNumber = String.valueOf(stringNumber.charAt(1));
maps.put(array[Integer.parseInt(firstNumber)] + " " + array[Integer.parseInt(secondNumber)], i);
}
}
List<String> sortedStringNumbers = new ArrayList<>(maps.keySet());
Collections.sort(sortedStringNumbers);
int cnt = 0;
StringBuilder sb = new StringBuilder();
for (String s : sortedStringNumbers) {
sb.append(maps.get(s) + " ");
cnt++;
if (cnt == 10) {
sb.append("\n");
cnt = 0;
}
}
System.out.println(sb);
}
}
- String클래스가 Comparable 인터페이스를 구현하고 있는걸 까먹고 있어서 어떻게 풀어낼지 한참 고민했었다.
- String클래스는 이미 Comparable 인터페이스를 구현해 놓았다. 문자열 간의 사전식(lexicographical) 비교
- 사전식으로 비교하기 때문에 출력할 정수 범위에 있는 숫자들을 입력 예제처럼 8 -> eight, 26 -> two six 으로 바꿔서 맵에 저장
- ("two six" , 26) 의 형태로 맵에 저장
- 맵의 key들을 Arraylist로 생성한 후 Collections.sort(해당 리스트)로 정렬한다.
- 여기서 String클래스에 구현되어있는 compareTo메서드가 사용되어 사전순으로 리스트가 정렬된다.
- 마지막으로 list를 순회하면서 map에서 get(key)해서 출력하면 정답
<결론, 주의할점>
- Comparable, CompareTo 잘 알아두자
반응형
'Study or Lecture > 항해 99클럽 코딩테스트 스터디' 카테고리의 다른 글
| 항해 99클럽 코딩테스트 스터디 5기 2일차 TIL (자바 / 미들러) (2) | 2025.01.15 |
|---|---|
| 항해 99클럽 코딩테스트 스터디 5기 1일차 TIL (자바 / 미들러) (0) | 2025.01.13 |
| 항해 99클럽 코딩테스트 스터디 29일차 TIL (자바 / 비기너) (1) | 2024.11.26 |
| 항해 99클럽 코딩테스트 스터디 27일차 TIL (자바 / 비기너) (0) | 2024.11.23 |
| 항해 99클럽 코딩테스트 스터디 22일차 TIL (자바 / 비기너) (0) | 2024.11.19 |
댓글