[SWEA] 1221. GNS

new Dean( );·2021년 9월 2일
0

알고리즘

목록 보기
29/30

문제

1221. [S/W 문제해결 기본] 5일차 - GNS
숫자가 문자로 주어진다. 작은 수부터 정렬해서 문자로 출력하시오.

  • 입력으로 주어지는 테스트 케이스의 길이는 숫자의 수 라고 생각하면 된다.

풀이

나만의 Hash table을 만들었다.
hash값 충돌나면 처리해야되는데, 10개면 되니까 충돌나지 않도록 해시함수를 만들었다. getHash()

자바코드

import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.Set;

import java.io.FileInputStream;

class Solution
{
	static int [] table = new int[12];
	static String [] num = {"ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN"};
	public static void main(String args[]) throws Exception
	{

		Scanner sc = new Scanner(System.in);
		int T;
		T=sc.nextInt();
		int N;
		String tc;
		String input;
		for(int test_case = 1; test_case <= T; test_case++)
		{
			for (int i=0; i<12; i++) table[i] = 0;
			tc = sc.next();
			N = sc.nextInt();
			
			for (int i=0; i<N; i++) {
				input = sc.next();
				table[getHash(input)]++;
			}
			
			System.out.println("#"+test_case);
			
			int cnt;
			for (int i=0; i<10; i++) {
				cnt = table[getHash(num[i])];
				for (int j=0; j<cnt; j++) {
					System.out.print(num[i] + " ");
				}
			}
			System.out.println();
		}
	}
	
	public static int getHash(String num) {
		int answer = 0;
		for (int i=0; i<3; i++) {
			answer += num.charAt(i)*(3-i);
		}
		return answer%13;
	}
}

0개의 댓글