🔺 문제
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
🔺 코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
var br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] arr = new String[n];
for(int i = 0 ; i < n ; i++) {
arr[i] = br.readLine();
}
// 1. 길이가 짧은 것 부터
// 2. 길이가 같으면 사전 순으로
Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
if(s1.length() == s2.length())
return s1.compareTo(s2); // 사전 순 정렬
else
return s1.length() - s2.length();
}
});
var sb = new StringBuilder();
sb.append(arr[0]).append('\n');
// 중복 단어는 하나만 남기고 제거
for(int i=1 ; i < n ; i++) {
if(!arr[i].equals(arr[i-1]))
sb.append(arr[i]).append('\n');
}
System.out.println(sb);
}
}
✅ 해결 아이디어
- 사용자 정의 정렬 시, Arrays.sort() Comparator 인터페이스 사용
- 문자열 길이가 같을 때 사전 순 정렬 시,.compareTo()
사용
- 중복 단어는 하나만 남기고 제거 시,.equals()
사용 (0은 첫 번째라 빠지면 안 되니까 무조건 넣음)
✔ .compareTo
: 단어 사전 순 정렬
(참고)
- 풀이
[백준] 1181번 : 단어 정렬 - JAVA [자바]
www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문
st-lab.tistory.com
✔ .compareTo 메소드 사용법
자바(Java) CompareTo 메소드
츄르사려고 코딩하는 코집사입니다. 1. int compareTo 메소드 - 자신과 인자로 전달 받는 원소와 비교하여 음수, 0, 정수를 리턴한다. - 즉, 2개의 값을 비교하여 in형의 값으로 리턴해주는 함수다. - 음
yongku.tistory.com
[JAVA] 자바_compareTo ( 값 [문자열/숫자] 비교 )
compareTo() - int compareTo(NumberSubClass referenceName) - int compareTo(String anotherString) - compareTo() 함수는 두개의 값을 비교하여 int 값으로 반환해주는 함수이다. compareTo() 함수에는 위에서 설명하는바와 같이 "
mine-it-record.tistory.com
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 18870번: 좌표 압축 (0) | 2023.03.22 |
---|---|
[백준/JAVA] 10814번: 나이순 정렬 (0) | 2023.03.22 |
[백준/JAVA] 11651번: 좌표 정렬하기 2 (0) | 2023.03.21 |
[백준/JAVA] 11650번: 좌표 정렬하기 (0) | 2023.03.21 |
[백준/JAVA] 10989번: 수 정렬하기 3 (0) | 2023.03.21 |