반응형
Notice
Recent Posts
Recent Comments
Link
It's easy, if you try
[SW Expert Academy] 1221: GNS (JAVA) 본문
반응형
풀이
package com.sohee.algo;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution1221 {
static String[] numbers = new String[]{"ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN"};
static int [] cnt;
static String testCase;
static int N;
public static void main(String[] args) throws IOException {
// System.setIn(new FileInputStream("GNS_test_input.txt"));
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
int T = stoi(br.readLine());
for(int t = 0; t < T; t++) {
cnt = new int[10];
StringTokenizer st = new StringTokenizer(br.readLine());
testCase = st.nextToken();
N = stoi(st.nextToken());
StringTokenizer st2 = new StringTokenizer(br.readLine());
countNums(st2);
printNums();
}
}
private static void countNums(StringTokenizer st) {
for (int i=0; i< N; i++) {
String input = st.nextToken();
if (input.equals("ZRO")) cnt[0]++;
else if (input.equals("ONE")) cnt[1]++;
else if (input.equals("TWO")) cnt[2]++;
else if (input.equals("THR")) cnt[3]++;
else if (input.equals("FOR")) cnt[4]++;
else if (input.equals("FIV")) cnt[5]++;
else if (input.equals("SIX")) cnt[6]++;
else if (input.equals("SVN")) cnt[7]++;
else if (input.equals("EGT")) cnt[8]++;
else if (input.equals("NIN")) cnt[9]++;
}
}
private static void printNums() {
System.out.println(testCase+" ");
int now = 0; // 0 부터 시작
for (int num : cnt) {
while(num > 0) {
System.out.print(numbers[now]+" ");
num--;
}
now++;
}
System.out.println();
}
private static int stoi(String input) {
return Integer.valueOf(input);
}
}
input은 아래와 같은 형식으로 들어온다.
2
#1 11
SVN FOR ZRO NIN FOR EGT EGT TWO FOR FIV FIV
#2 20
ONE SVN ONE ONE FIV TWO SVN SIX ONE FOR TWO THR TWO TWO ONE SIX EGT FIV SVN SIX
이 때, output(정답)은 아래와 같다.
#1
ZRO TWO FOR FOR FOR FIV FIV SVN EGT EGT NIN
#2
ONE ONE ONE ONE ONE TWO TWO TWO TWO THR FOR FIV FIV SIX SIX SIX SVN SVN SVN EGT
-
String 배열인 numbers를 행성에서 0~9로 사용되는 값인 "ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN" 로 초기화한다.
-
countNums(): int 배열 cnt는 크기를 10으로 하고 input으로 들어오는 ZRO 부터 NIN까지 해당하는 값에 따라 해당 인덱스에 1씩 더한다.
-
printNums() : 먼저 now 는 0~9 를 의미하며 오름차순으로 sort해야하기 때문에 0부터 시작해 while문이 종료될 때마다 1씩 증가시켰다. for문에서는 cnt 배열에서 순서대로 count(num) 값을 받아오고, while문에서는 count값(num)을 하나씩 빼가며 모든 now 인덱스에 해당하는 numbers 객체를 출력(num == 0)한 후 종료 된다.
최초 발행 날짜: 2021-01-21 23:46:00
반응형
'알고리즘 > 자바(Java)' 카테고리의 다른 글
[백준/boj] 3040: 백설 공주와 일곱 난쟁이 (Java) / 조합 (0) | 2021.02.15 |
---|---|
[백준/boj] 2961: 도영이가 만든 맛있는 음식 (Java) / 브루트포스 알고리즘 / 부분 집합 (3) | 2021.02.15 |
[SW Expert Academy] 5215:햄버거다이어트 (Java) / 부분집합 (0) | 2021.02.14 |
[백준/boj] 2206: 벽 부수고 이동하기 (Java) / BFS / 3차원 배열 (0) | 2021.02.14 |
[백준/boj] 5397: 키로거 (Java) / Deque (0) | 2021.02.12 |
Comments