알고리즘/정렬
[백준] 1181번 단어정렬 자바(Java)
park-walnut
2024. 12. 26. 00:23
문제
솔루션
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int num = Integer.parseInt(br.readLine());
Map<Integer, ArrayList<String>> dict = new HashMap<>();
JUMP: for (int i = 0; i < num; i++) {
String s = br.readLine();
Integer length = s.length();
ArrayList<String> stringList;
if (dict.containsKey(length)) {
stringList = dict.get(length);
Iterator<String> iterator = stringList.iterator();
while (iterator.hasNext()) {
String next = iterator.next();
if (next.equals(s)) {
continue JUMP;
}
}
} else {
stringList = new ArrayList<>();
}
stringList.add(s);
dict.put(s.length(), stringList);
}
ArrayList<Integer> keySet = new ArrayList<>(dict.keySet());
Collections.sort(keySet);
Iterator<Integer> it = keySet.iterator();
while (it.hasNext()) {
ArrayList<String> strings = dict.get(it.next());
if (strings.size() == 1) {
bw.write(strings.get(0) + "\n");
bw.flush();
} else {
Collections.sort(strings);
for (int i = 0; i < strings.size(); i++) {
bw.write(strings.get(i) + "\n");
bw.flush();
}
}
}
}
}
실행 결과
오후 5:29:53: Executing ':Main.main()'...
> Task :compileJava
> Task :processResources NO-SOURCE
> Task :classes
13
but
i
wont
hesitate
no
more
no
more
it
cannot
wait
im
yours
> Task :Main.main()
i
im
it
no
but
more
wait
wont
yours
cannot
hesitate
트러블슈팅
- 이슈 1
- 문제
- while문 안에 while문이 존재할때 바깥 while문으로 continue를 실행하여야 하는 상황
- 해결
- 자바의 'goto 문' 사용
- 문제
JUMP:for(int i=0; i<10; i++){
while(true){
break JUMP;
}
}
개선방향
- Stringbuilder
- 출력 IO 횟수 감소
- HashSet
- 중복된 단어 자동 제거