[백준] 1181

당당·2023년 4월 29일
0

백준

목록 보기
68/179

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

📔문제

알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.

  1. 길이가 짧은 것부터
  2. 길이가 같으면 사전 순으로

단, 중복된 단어는 하나만 남기고 제거해야 한다.


📝입력

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


📺출력

조건에 따라 정렬하여 단어들을 출력한다.


📝예제 입력 1

13
but
i
wont
hesitate
no
more
no
more
it
cannot
wait
im
yours

📺예제 출력 1

i
im
it
no
but
more
wait
wont
yours
cannot
hesitate

🔍출처

-문제를 만든 사람: author5


🧮알고리즘 분류

  • 문자열
  • 정렬

📃소스 코드

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class Code1181 {
    public static void main(String[] args) throws IOException {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        int N=Integer.valueOf(br.readLine());

//        String[] word=new String[N];
        ArrayList<String> word=new ArrayList<String>();
        int count=0;

        for(int i=0;i<N;i++){
            if (count==N){
                break;
            }
            word.add(br.readLine());
            count++;
            for(int j=0;j<i;j++){
                if(word.get(i).equals(word.get(j))){//중복된 문자 없애자~
                    word.remove(j);
                    i=i-1;
                    break;
                }
            }
        }
        br.close();

        int len=word.size();

        Collections.sort(word); //알파벳 순 정렬

        for(int i=0;i<len;i++){
            for(int j=i+1;j<len;j++){
                if(word.get(i).length()>word.get(j).length()){
                    word.add(i,word.get(j));
                    word.remove(j+1);
                }
            }
        }

        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
        for(int i=0;i<len;i++){
            String answer=word.get(i);
            bw.write(answer+'\n');
        }
        bw.flush();
        bw.close();

    }
}

📰출력 결과


📂고찰

6
aba
aab
aaa
ab
abb
aaaa

내 반례는 이것이었다! 그래서 배열에서 리스트로 바꿔서 계산했더니 바로 맞았다 ㅠㅠ

profile
MySQL DBA 신입 지원

0개의 댓글