728x90
✅ 문제 요약
0~9인 숫자를 String형식으로 나타낸 새로운 숫자체계가 있다고 가정했을 때,
새로운 숫자체계들을 입력 받았을 때 오름차순 정렬한 결과를 출력하라
🤔 문제 풀이
0~9까지의 새로운 String 숫자 체계를 10진수에 매핑하여 치환하고 Arrays.sort 로 오름차순
정렬해준 뒤, 다시 10진수를 String 숫자 체계에 매핑하여 치환해주는 방식을 채택했다.
매핑해주는 방법은 switch-case 방식으로 "ZRO" -> 0, 3 -> "THR" 같은 형식으로 치환해주었다.
개인적으로 else-if 반복과 switch-case 방식은 코드길이가 길어져서 선호하지 않지만
더 깔끔하고 간단한 풀이법이 떠오르지 않아 간단한 방법을 채택하기로 했다..
🚨CODE
import java.util.*;
import java.io.*;
public class Solution {
static int[] arr;
static String[] answer;
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 testCase = Integer.parseInt(br.readLine());
for (int t = 1; t <= testCase; t++) {
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
String testCaseNumber = st.nextToken();
sb.append(testCaseNumber).append("\n");
int len = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
arr = new int[len];
answer = new String[len];
for (int i = 0; i < len; i++) {
String newNumber = st.nextToken();
newNumberToDecimal(newNumber, i);
}
Arrays.sort(arr);
decimalToNewNumber(arr);
for(String num : answer) {
sb.append(num).append(" ");
}
bw.write(String.format("%s", sb.toString()));
}
bw.flush();
}
public static void newNumberToDecimal(String newNumber, int idx) {
switch (newNumber) {
case "ZRO":
arr[idx++] = 0;
break;
case "ONE":
arr[idx++] = 1;
break;
case "TWO":
arr[idx++] = 2;
break;
case "THR":
arr[idx++] = 3;
break;
case "FOR":
arr[idx++] = 4;
break;
case "FIV":
arr[idx++] = 5;
break;
case "SIX":
arr[idx++] = 6;
break;
case "SVN":
arr[idx++] = 7;
break;
case "EGT":
arr[idx++] = 8;
break;
case "NIN":
arr[idx++] = 9;
break;
}
}
public static void decimalToNewNumber(int[] arr) {
int idx = 0;
for (int i = 0; i < arr.length; i++) {
switch (arr[i]) {
case 0:
answer[idx++] = "ZRO";
break;
case 1:
answer[idx++] = "ONE";
break;
case 2:
answer[idx++] = "TWO";
break;
case 3:
answer[idx++] = "THR";
break;
case 4:
answer[idx++] = "FOR";
break;
case 5:
answer[idx++] = "FIV";
break;
case 6:
answer[idx++] = "SIX";
break;
case 7:
answer[idx++] = "SVN";
break;
case 8:
answer[idx++] = "EGT";
break;
case 9:
answer[idx++] = "NIN";
break;
}
}
}
}
728x90
반응형
'코딩테스트' 카테고리의 다른 글
[JAVA-D3] SWEA 6485 - 삼성시의 버스 노선 (1) | 2024.05.01 |
---|---|
[JAVA-D3] SWEA 3431 - 준환이의 운동관리 (0) | 2024.05.01 |
[JAVA-L2] 프로그래머스 - 올바른 괄호 (1) | 2024.04.28 |
[JAVA-D3] SWEA 1873 - 상호의 배틀필드 (0) | 2024.04.25 |
[JAVA-D3] SWEA 6808 - 규영이와 인영이의 카드게임 (0) | 2024.04.24 |