문제풀이

[백준 (Baekjoon)] (java) 문제 1181 - 오답 (Bubble sort)

Ju Young Pang 2022. 4. 16. 12:28

https://www.acmicpc.net/problem/1181

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

1) 업로드 이유

- Bubble sort를 구현해 봤으나 시간초과에 걸린다는걸 발견. 하지만 버블소트를 구현해 본 것 만으로도 그 의미가 있다고 생각하여 업로드함.

 

2) 코드

import java.io.*;

public class p1181_bubble{
    static BufferedReader br;
    static BufferedWriter bw;

    static int N;
    static String[] list;

    public static void main(String[] args) throws IOException{
        br = new BufferedReader(new InputStreamReader(System.in));
        bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        N = Integer.parseInt(br.readLine());
        list = new String[N];

        for(int i=0;i<N;i++){
            list[i] = br.readLine();
        }

        for(int rep=0; rep<N; rep++){
            for(int i=0;i<N-1;i++){
                if(list[i].length() == list[i+1].length()){
                    if(list[i].compareTo(list[i+1])>0){
                        swap(i,i+1);
                    }
                }
                else if(list[i].length()>list[i+1].length()){
                    swap(i,i+1);
                }
            }
        }

        StringBuilder sb = new StringBuilder();
        for(int i=0;i<N-1;i++){
            if(!list[i].equals(list[i+1])) sb.append(list[i]).append("\n");
        }
        sb.append(list[N-1]).append("\n");
        
        bw.write(sb.toString());
        bw.flush();
        bw.close();
        br.close();
    }

    private static void swap(int i, int j){
        String temp = list[i];
        list[i] = list[j];
        list[j] = temp;
    }
}