반응형
1) 숫자놀이
https://www.acmicpc.net/problem/1755
79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로 먼저 온다.
문제는 정수 M, N(1 ≤ M ≤ N ≤ 99)이 주어지면 M 이상 N 이하의 정수를 숫자 하나씩 읽었을 때를 기준으로 사전순으로 정렬하여 출력하는 것이다.
입력
첫째 줄에 M과 N이 주어진다.
출력
M 이상 N 이하의 정수를 문제 조건에 맞게 정렬하여 한 줄에 10개씩 출력한다.
예제 입력 1
8 28
예제 출력 1
8 9 18 15 14 19 11 17 16 13
12 10 28 25 24 21 27 26 23 22
20
2) 내가 구현한 코드
import java.io.*;
import java.util.*;
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));
StringTokenizer st = new StringTokenizer(br.readLine());
HashMap<String,String> map = new HashMap<>();
map.put("0","zero");
map.put("1","one");
map.put("2","two");
map.put("3","three");
map.put("4","four");
map.put("5","five");
map.put("6","six");
map.put("7","seven");
map.put("8","eight");
map.put("9","nine");
HashMap<String,Integer> answerMap = new HashMap<>();
ArrayList<String> list = new ArrayList<>();
ArrayList<Integer> answerList = new ArrayList<>();
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
//숫자를 문자로 변환해 맵에 "문자" : 숫자 로 저장
for(int i=N; i<=M; i++) {
String temp = "";
for (char str : String.valueOf(i).toCharArray()){
temp += map.get(String.valueOf(str));
}
answerMap.put(temp,i);
}
//"문자" 오름차순 정렬
for(Map.Entry<String,Integer> entry:answerMap.entrySet()) {
list.add(entry.getKey());
}
Collections.sort(list);
//"문자"에 해당하는 숫자 answerList 에 넣기
for(int i=0; i<list.size(); i++) {
answerList.add(answerMap.get(list.get(i)));
}
//10개씩 끊어 출력하기
for(int i=0; i<answerList.size(); i++) {
bw.write(answerList.get(i)+" ");
if(i%10==9) bw.write("\n");
}
bw.flush();
br.close();
bw.close();
}
}
map 에 저장된 key 들을 정렬 후 List로 변환 >>>> 정렬된 key들의 value 값을 출력
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.StringTokenizer;
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));
StringTokenizer st = new StringTokenizer(br.readLine());
HashMap<String,String> map = new HashMap<>();
map.put("0","zero");
map.put("1","one");
map.put("2","two");
map.put("3","three");
map.put("4","four");
map.put("5","five");
map.put("6","six");
map.put("7","seven");
map.put("8","eight");
map.put("9","nine");
HashMap<String,Integer> answerMap = new HashMap<>();
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
//숫자를 문자로 변환해 맵에 "문자" : 숫자 로 저장
for(int i=N; i<=M; i++) {
String temp = "";
for (char str : String.valueOf(i).toCharArray()){
temp += map.get(String.valueOf(str));
}
answerMap.put(temp,i);
}
//"문자" 오름차순 정렬
List<String> sortedLst = answerMap.keySet().stream().sorted().toList();
//10개씩 끊어 출력하기
for(int i=0; i<sortedLst.size(); i++){
bw.write(answerMap.get(sortedLst.get(i))+" ");
if(i%10==9) bw.write("\n");
}
bw.flush();
br.close();
bw.close();
}
}
3) 추가 문제
미들러 - 줄세우기
https://www.acmicpc.net/problem/2631
챌린저 - 택배 배송
반응형
'coding_test' 카테고리의 다른 글
[99클럽 4기 코테 스터디 TIL 33일차] 탕수육 (feat. String의 길이가 짝수/홀수) (1) | 2024.11.29 |
---|---|
[99클럽 4기 코테 스터디 TIL 32일차] H-Index (feat. 배열을 내림차순으로 정렬 - int) (0) | 2024.11.28 |
[99클럽 4기 코테 스터디 TIL 30일차] 세준세비 (feat. 최소힙) (1) | 2024.11.26 |
[99클럽 4기 코테 스터디 TIL 29일차] 2231. Largest Number After Digit Swaps by Parity (1) | 2024.11.26 |
[99클럽 4기 코테 스터디 TIL 28일차] 506. Relative Ranks (feat.TreeMap 이용함) (0) | 2024.11.25 |