It's easy, if you try

[SW Expert Academy] 1221: GNS (JAVA) 본문

알고리즘/자바(Java)

[SW Expert Academy] 1221: GNS (JAVA)

s5he2 2021. 2. 14. 21:39
반응형

풀이

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() : 먼저 now0~9 를 의미하며 오름차순으로 sort해야하기 때문에 0부터 시작해 while문이 종료될 때마다 1씩 증가시켰다. for문에서는 cnt 배열에서 순서대로 count(num) 값을 받아오고, while문에서는 count값(num)을 하나씩 빼가며 모든 now 인덱스에 해당하는 numbers 객체를 출력(num == 0)한 후 종료 된다.

최초 발행 날짜: 2021-01-21 23:46:00

반응형
Comments