✔ GNS
문제 분석하기
각 숫자의 값 단어를 문자열 배열에 저장한 후 이에 따른 인덱스를 사용
손으로 풀어보기
- 각 숫자의 값 단어를 문자열 배열에 저장
- 문자열을 받아 문자열에 해당하는 인덱스로 저장
- 저장된 인덱스들을 오름차순으로 정렬
- 정렬한 값에 따라 인덱스를 가지고 올바른 값 단어를 출력
슈도코드 작성하기
T(테스트 케이스 수) = 테스트 케이스의 갯수 저장
for(T만큼) {
t(# 기호와 테스트 케이스의 번호)
n(테스트 케이스의 길이)
numbers(각 숫자의 값 단어를 저장하는 문자열 배열)
arr(문자들의 인덱스를 저장하는 배열)
for(i -> n만큼) {
string(문자)
for(numbers를 돌면서) {
if(numbers의 문자와 같다면) {
arr[i] = 문자의 인덱스
}
}
}
arr 오름차순 정렬
Stringbuilder sb = new StringBuilder();
for (i -> n만큼) {
arr[i]를 numbers의 인덱스에 맞는 문자로 변경하여 sb에 추가
sb에 공백 추가
}
#T와 sb 반환
}
코드 구현하기
/**
* 1221) GNS
*/
public class D002_1221 {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
// T(테스트 케이스 수)
int T = sc.nextInt();
// T만큼
for (int test_case = 1; test_case <= T; test_case++) {
// t(# 기호와 테스트 케이스의 번호)
String t = sc.next();
// n(테스트 케이스의 길이)
int n = sc.nextInt();
// numbers(각 숫자의 값 단어를 저장하는 문자열 배열)
String[] numbers = { "ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN" };
// arr(문자들의 인덱스를 저장하는 배열)
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
// string(문자)
String string = sc.next();
// numbers를 돌면서
for (int j = 0; j < numbers.length; j++) {
// numbers의 문자와 같다면
if (numbers[j].equals(string)) {
// 문자의 인덱스 저장
arr[i] = j;
}
}
}
// arr 오름차순 정렬
Arrays.sort(arr);
StringBuilder sb = new StringBuilder();
// arr[i]를 numbers의 인덱스에 맞는 문자로 변경하여 sb에 공백과 함께 추가
for (int i = 0; i < arr.length; i++) {
int num = arr[i];
sb.append(numbers[num] + " ");
}
// #T와 sb 반환
System.out.println(t + " " + sb);
}
}
}
'Coding Test > Java 알고리즘 실전' 카테고리의 다른 글
[1223] 계산기2 (0) | 2023.11.19 |
---|---|
[1222] 계산기1 (0) | 2023.11.19 |
[1220] Magnetic (0) | 2023.11.18 |
[1219] 길찾기 (0) | 2023.11.17 |
[1218] 괄호 짝짓기 (0) | 2023.11.17 |