티스토리 뷰
반응형
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
⊙ 문제
⊙ 입력
⊙ 출력
⊙ 예제 입출력
⊙ 알고리즘 분류
- 문자열
- 정렬
⊙ 문제 접근 과정
배열이 특정한 규칙( 1. 길이가 짧은 것부터, 2. 길이가 같으면 사전 순으로)을 통해 정렬하라는 걸 보고
함수를 어떻게 만들어야할지 고민을 했다. 생각이 끝나고 함수를 구현하고 있었는데 코드가 말도 안 되게
길어지는 것을 보고 아니라고 생각했다.
그러다 Arrays.sort의 Comparator를 알게 되었다.
Comparator를 사용하자 코드 길이가 많이 짧아졌다.
⊙ Comparator
- Comparator란?
Comparator는 객체 간 특정한 규칙이 필요할 때 사용한다.
⊙ 문제 풀이
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
String[] str = new String[N];
for (int i = 0; i < N ; i++) {
str[i]=in.next();
}
Arrays.sort(str, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1.length() == o2.length()) {
return o1.compareTo(o2);
}
else {
return o1.length() - o2.length();
}
}
});
System.out.println(str[0]);
for(int i =1 ; i < N; i++) {
if (!str[i].equals(str[i-1])) {
System.out.println(str[i]);
}
}
}
}
⊙ 결과
⊙ 마무리
배열에 특정한 정렬이나 일반적인 정렬이 필요할 때, 자바에서는 Comparator나 Comparable를 활용하자.
728x90
반응형
'백준 온라인 저지 [BOJ] > JAVA [자바]' 카테고리의 다른 글
[백준(BOJ)] 11050번 : 이항 계수 1 - JAVA[자바] (0) | 2021.04.14 |
---|---|
[백준(BOJ)] 2798번 : 블랙잭 - JAVA[자바] (0) | 2021.04.13 |
[백준(BOJ)] 2920번 : 음계 - JAVA[자바] (2) | 2021.04.13 |
[백준(BOJ)] 2739번 : 구구단 - JAVA[자바] (0) | 2021.04.13 |
[백준(BOJ)] 2675번 : 문자열 반복 - JAVA[자바] (0) | 2021.04.13 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 우종정
- 쉽게 배우는 자바 프로그래밍
- 알고리즘
- 쉽게배우는자바프로그래밍
- Web
- 운영체제
- 정렬
- py
- 자바
- Python
- 답
- OS
- java
- 자바스크립트
- 그리디
- JS
- 해답
- 쉽게배우는
- 연습문제
- BFS
- 풀이
- C++
- 정리
- 문자열
- 파이썬
- 백준
- CPP
- 프로그래머스
- 정답
- 구현
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함