첫째줄에는 단어의 개수
둘째 줄부터 N개의 단어 입력
// 필요 라이브러리 import
import java.io.*;
import java.util.*;
public class N_1181 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); // 단어의 개수
String[] str = new String[N];
for (int i = 0; i < N; i++)
str[i] = br.readLine();
N에 입력 받은 단어의 개수를 할당한 후, 반복문을 이용해 단어 N개를 입력하여 순서대로 문자열 배열인 str에 할당한다.
중복값을 제거하기 위한 코드
중복된 값은 한 번만 출력해야 하므로 우리는 HashSet을 이용해 아예 중복값을 없앨 것이다.
// 중복값을 제거 하기 위해 배열 -> HashSet 변경
HashSet<String> hashSet = new HashSet<>(Arrays.asList(str));
// 중복값이 제거된 배열 변환
String[] resArray = hashSet.toArray(new String[0]);
HashSet은 입력한 순서를 보장하지 않지만, 어차피 우리는 정렬된 결과만 도출하면 되기 때문에 상관없다!
문자열이 담긴 String str
배열을 HashSet으로 변환한다.
중복값을 제거한 후 toArray(new String[0])
을 이용하여 HashSet을 다시 배열로 변환하여 resArray에 넘겨준다.
new String[0]
: 배열의 크기를 0으로 지정하면 자동으로 크기가 지정된다.
정렬 코드
Arrays.sort(resArray, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
// 문자열 길이가 같다면 오름차순
if (o1.length() == o2.length())
return o1.compareTo(o2);
return o1.length() - o2.length();
}
});
Arrays.sort의 compare 함수를 재정의 하여 작성한다.
문자열의 길이 순으로 정렬을 하되, 길이가 같다면 compareTo()
함수를 이용하여 문자열을 사전순으로 정렬하도록 코드를 작성한다.
StringBuilder 객체를 선언하여 정렬된 resArray의 단어들을 모두 저장하고, 마지막에 한 번에 출력한다.
StringBuilder sb = new StringBuilder();
for (int i = 0; i < resArray.length; i++)
sb.append(resArray[i]).append('\n');
System.out.println(sb);
import java.io.*;
import java.util.*;
public class N_1181 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); // 단어의 개수
String[] str = new String[N];
for (int i = 0; i < N; i++)
str[i] = br.readLine();
// str 배열을 HashSet으로 변환
HashSet<String> hashSet = new HashSet<>(Arrays.asList(str));
String[] resArray = hashSet.toArray(new String[0]); // 중복이 제거된 후 배열 변환
// 문자열 길이순 정렬
Arrays.sort(resArray, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
// 문자열 길이가 같다면 오름차순
if (o1.length() == o2.length())
return o1.compareTo(o2);
return o1.length() - o2.length();
}
});
StringBuilder sb = new StringBuilder();
for (int i = 0; i < resArray.length; i++)
sb.append(resArray[i]).append('\n');
System.out.println(sb);
br.close();
}
}