[SWEA] #1221 - GNS
2022. 3. 11. 23:19
728x90
반응형
💡 출처
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14jJh6ACYCFAYD
💡 문제
[설명]
숫자 체계가 우리와 다른 어느 행성이 있다. 아래는 이 행성에서 사용하는 0 ~ 9의 값을 순서대로 나타낸 것이다.
"ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN"
0 ~ 9의 값을 나타내는 단어가 섞여 있는 문자열을 받아 작은 수부터 차례로 정렬하여 출력하는 프로그램을 작성하라.
예를 들어 입력 문자열이 "TWO NIN TWO TWO FIV FOR" 일 경우 정렬한 문자열은 "TWO TWO TWO FOR FIV NIN" 이 된다.
💡 아이디어
우선 입력 문자열과 비교를 위해
"ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN"을 가지는 String배열을 선언한다.
그리고 Counting Sort(기수 정렬)를 위해 0 ~ 9 인덱스를 가지는 int 배열을 선언한다.
입력 문자열과 String배열을 비교하여 int배열의 해당 인덱스의 수를 +1 해준다.
마지막으로 int 배열의 각 인덱스가 가지는 수만큼 반복해 해당 문자열을 출력해주면 정렬이 완료된다.
💡 소스코드
package SWEA;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class SWEA_P1221_GNS {
static String[] pattern = { "ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN" };
public static void main(String[] args) throws Exception {
System.setIn(new FileInputStream("./SWEA_INPUT/SWEA_P1221_input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer sz;
int T = Integer.parseInt(br.readLine());
for (int TC = 1; TC <= T; TC++) {
sz = new StringTokenizer(br.readLine());
sz.nextToken();// #테스트 케이스
int N = Integer.parseInt(sz.nextToken());// 입력 사이즈
int[] counting = new int[10];// 기수정렬을 위한 배열
sz = new StringTokenizer(br.readLine());// 한 줄을 입력받아
for (int i = 0; i < N; i++) {
String str = sz.nextToken();
counting[PatternNum(str)]++;//입력받은 문자열과 매치되는 counting 값을 1 증가
}
System.out.println("#" + TC + " ");
for (int i = 0; i < counting.length; i++) {
for (int j = 0; j < counting[i]; j++)
System.out.print(pattern[i] + " ");
}
System.out.println("");
}
br.close();
}
// "ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN"와 매치되는 숫자를 반환
public static int PatternNum(String str) {
switch (str) {
case "ZRO":
return 0;
case "ONE":
return 1;
case "TWO":
return 2;
case "THR":
return 3;
case "FOR":
return 4;
case "FIV":
return 5;
case "SIX":
return 6;
case "SVN":
return 7;
case "EGT":
return 8;
case "NIN":
return 9;
}
return -1;
}
}
💡 결과
728x90
반응형
'Algorithm > SW Expert Academy' 카테고리의 다른 글
[SWEA] #1226 - 미로1 (0) | 2022.03.15 |
---|---|
[SWEA] #1225 - 암호생성기 (0) | 2022.03.11 |
[SWEA] #1224 - 계산기3 (0) | 2022.03.09 |
[SWEA] #1220 - Magnetic (0) | 2022.03.09 |
[SWEA] #1219 - 길찾기 (0) | 2022.03.08 |