Collections.sort or Arrays.sort 이용하기
단어 정렬 : Silver5
https://www.acmicpc.net/problem/1181
백준 입력받는 부분은 예전에 정리해둔 입력방식을 참고하였다.
https://la-reveuse.tistory.com/2
처음 작성한 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = "";
ArrayList<String> al = new ArrayList<>();
LinkedHashSet<String> hs = new LinkedHashSet<>();
while((str = br.readLine()) != null && !str.isEmpty()) {
StringTokenizer st = new StringTokenizer(str);
al.add(st.nextToken());
}
Collections.sort(al);
Collections.sort(al, Comparator.comparingInt(String::length));
for (int i = 0; i < al.size(); i++) {
String s = "";
for (char ch : al.get(i).toCharArray()) {
if (ch >= 'a' && ch <= 'z') {
s += ch;
}
}
if (s.equals(al.get(i))) {
hs.add(al.get(i));
}
}
for (String el : hs) {
System.out.println(el);
}
}
}
ㄴ BufferedWriter 를 사용하지 않고 BufferedReader 만 사용
ㄴ Collections.sort(ArrayList 타입 배열) 을 통해 단어를 사전순으로 정렬하고자함
ㄴ Collections.sort(ArrayList 타입 배열, Comparator.comparingInt(String::length)); 이용하여 문자열 길이에 따라 오름차순 정렬하도록 함
두 번째 작성한 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
String[] str = new String[n];
for (int i = 0; i < n; i++) {
str[i] = br.readLine();
}
LinkedHashSet<String> hs = new LinkedHashSet<>();
Arrays.sort(str);
Arrays.sort(str, Comparator.comparingInt(String::length));
for (int i = 0; i < str.length; i++) {
String s = "";
for (char ch : str[i].toCharArray()) {
if (ch >= 'a' && ch <= 'z') {
s += ch;
}
}
if (s.equals(str[i])) {
hs.add(str[i]);
}
}
for (String el : hs) {
bw.write(el);
bw.newLine(); // 개행 문자 추가
}
bw.flush(); // 버퍼 비우기
}
}
ㄴ BufferedWriter 이용하여 출력하기
int n = Integer.parseInt(br.readLine());
String[] str = new String[n];
for (int i = 0; i < n; i++) {
str[i] = br.readLine();
}
ㄴ 입력받는 방식 변경
문제점 : 백준을 오랜만에 풀어보니 입력 받는 부분까지 내가 작성해야된다는 점이 불편했다.
해결 방법 : BufferedReader, BufferedWriter 를 함께 이용하여 실행 시간을 단축하였다.
깨달은 바 : 앞으로 백준을 풀 때는 BufferedReader, BufferedWriter 를 사용하도록 해야겠다.
'코딩테스트 > programming_JAVA' 카테고리의 다른 글
[Java] baekjoon_1978 : 소수 찾기 (1) | 2023.12.29 |
---|---|
[Java] baekjoon_1654 : 랜선 자르기 (0) | 2023.12.29 |
[Java] 프로그래머스_134240 : 푸드 파이트 대회 (0) | 2023.12.17 |
[Java] 프로그래머스_17681 : [1차] 비밀지도 (0) | 2023.12.17 |
[Java] 프로그래머스_42748 : K번째수 (0) | 2023.12.15 |