반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- 자바
- 백트래킹
- 시간 복잡도
- 브루트포스
- 무료개발강의
- 알고리즘
- 다이나믹 프로그래밍
- 코딩공부
- dfs
- Java개념
- dp
- 백준9단계
- 자바의정석연습문제
- 빅오 표기법
- 백준단계별로풀어보기
- BFS
- 백준알고리즘
- 알고리즘공부
- java
- 백준
- 자바의정석연습문제풀이
- 자바개념
- 자바의정석
- 동적계획법
- 개발공부
- ☆
- ★
- 무료코딩강의
- 백준자바
- 자바공부
Archives
- Today
- Total
더 많이 실패하기
백준 1181번 단어 정렬 자바 Java 본문
반응형
백준 9단계 9번 문제 - 1181 단어 정렬
https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
9. 정렬 (9) 백준 1881번 문제 단어 정렬
문제
오답
comparator에 익숙하지 않아서 없이 해보려다가...
코드 남기는 것도 민망할 만큼 엉망이라 그냥 지워버렸다
정답 인정 코드
지금 자바의 정석 8장을 듣고 있지만, 11장에서 comparator에서 다룬 영상이 있길래 잠깐 봤다
Comparator
compare(Object o1, Object o2)
비교해서 양수면 왼쪽이 크고 0이면 같고 음수면 오른쪽이 크다
(조건에 해당하면 위치를 바꿔주는 것)
compareTo()
→둘다 반환값은 int형
이정도로 개념 정리하고
https://st-lab.tistory.com/112
이 블로그를 참고했다
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
29
30
31
32
33
34
35
36
37
38
39
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
String[] arr = new String[n];
for(int i = 0; i < n; i++) {
arr[i] = br.readLine();
}
Arrays.sort(arr, new Comparator <String>(){
public int compare(String s1, String s2) {
if(s1.length() == s2.length()) { //길이가 같다면
return s1.compareTo(s2); //compareTo = 사전순 정렬
}else {
return s1.length() - s2.length(); //길이가 다르다면 오름차순으로 순서 바뀜
}
}
});
sb.append(arr[0]).append('\n'); //뒤의 문자열과 비교할 문자열 먼저 출력
for(int i = 1; i < n; i++) {
if(!arr[i].equals(arr[i-1])) { //arr[i]가 바로 앞에 출력된 문자열과 같지 않다면(중복이 아니라면)
sb.append(arr[i]).append('\n'); //출력
}
}
System.out.println(sb);
}
}
|
cs |
이해하기 힘들었던 부분을 최대한 풀어서 썼다
직후 백지 복습
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
29
30
31
32
33
34
|
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int n = sc.nextInt();
String arr[] = new String[n];
for(int i = 0; i < n; i++) {
arr[i] = sc.next();
}
Arrays.sort(arr, new Comparator<String>(){
public int compare(String s1, String s2) {
if(s1.length() == s2.length()) {
return s1.compareTo(s2);
}else {
return s1.length() - s2.length();
}
}
});
System.out.println(arr[0]);
for(int i = 1; i < n; i++) {
if(!arr[i].equals(arr[i-1])) {
sb.append(arr[i]).append('\n');
}
}
System.out.println(sb);
}
}
|
cs |
BufferedReader로 풀었으니 Scanner로도 해봤다 확실히 br이 훨~씬 빠르다
드디어 comparator가 들어간 코드를 틀린 부분 없이 완전히 쳤다..
감동.. 무작정 외우는 것도 안 된다면 가끔 개념을 이해하려고 더더더 노력해야 하나보다
혼자 오래 생각했는데도 결국 적절한 알고리즘을 생각해내지 못한 건 아쉽지만
그래도 역시 재밌는 건 사실이다
반응형
'알고리즘 > 백준' 카테고리의 다른 글
코딩공부 63일차: 백준 18870번 좌표 압축 자바 Java (0) | 2022.10.01 |
---|---|
코딩공부 62일차: 백준 10814번 나이순 정렬 자바 Java (0) | 2022.09.30 |
백준 11651번 좌표 정렬하기 2 자바 Java (0) | 2022.09.28 |
백준 11650번 좌표 정렬하기 자바 Java / 백준 단계별로 풀어보기 9단계 / 9. 정렬 (0) | 2022.09.27 |
백준 1427번 소트인사이드 자바 Java / 백준 단계별로 풀어보기 9단계 / 9. 정렬 (0) | 2022.09.26 |
Comments