[SWEA] 7701. 염라대왕의 이름 정렬 D4 - TreeSet
제출일 : 2019-10-08
문제 풀이 시간 : 15M
난이도 : ★☆
Problem
link : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWqU0zh6rssDFARG
Input
첫 번째 줄에 테스트 케이스의 수 T(1 ≤ T ≤ 50)가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 이승 명부의 이름 개수 N(1 ≤ N ≤ 20,000)이 주어진다.
각 테스트 케이스의 두 번째 줄부터 N개의 줄에 걸쳐서 알파벳 소문자로 이루어진 이름들이 주어진다.
이름에는 공백이 포함되지 않으며 최소 1개, 최대 50개의 알파벳으로 이루어져 있다.
Output
각 테스트 케이스마다 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고,
정리된 이름을 한 줄에 하나씩 출력하라. 같은 이름은 한 번만 출력해야 하는 것을 주의하라.
Example
input
2
5
my
name
is
ho
seok
12
s
a
m
s
u
n
g
j
j
a
n
g
output
#1
ho
is
my
name
seok
#2
a
g
j
m
n
s
u
Solution & Inpression
문제를 잘 읽고 문제에 맞추어 구현하면 되는 문제
Set
, TreeSet
, Comparator
, comparTo
등 자료구조와 함수를 알고 있다면 쉽게 해결할 수 있는 문제.
Code
언어 : JAVA
메모리 : 102,728 kb
실행시간 : 4,681 ms
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) throws Exception {
System.setIn(new FileInputStream("res/D4_7701_염라대왕의이름정렬.txt"));
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int tc = 1; tc <= T; tc++) {
int N = sc.nextInt();
Set<String> set = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
int r = o1.length() - o2.length();
if (r == 0)
return o1.compareTo(o2);
else
return r;
}
});
for (int i = 0; i < N; i++) {
set.add(sc.next());
}
System.out.println("#"+tc);
for (String string : set) {
System.out.println(string);
}
}
}
}
'Problem > SWEA' 카테고리의 다른 글
[SWEA] 1208. Flatten D3 (0) | 2019.10.19 |
---|---|
[SWEA] 1204. 최빈수 구하기 D2 (0) | 2019.10.19 |
[SWEA] 1249. 보급로 D4 - Dijkstra (0) | 2019.10.07 |
[SWEA] 4301. 콩 많이 심기 D4 - Simulation (0) | 2019.10.06 |
[SWEA] 4796. 의석이의 우뚝 선 산 D4 - Simulation (0) | 2019.10.06 |