본문 바로가기

ALGORITHM

백준 1181 단어 정렬 (Java)

1. 문제 링크

 

1181번: 단어 정렬

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

www.acmicpc.net

 

2. 문제 및 입출력예제

 

3. 문제 풀이

N번 반복해서 (중복 확인 후) 단어 리스트에 넣기

사전 순 정렬하기

최대 길이까지 돌면서 출력하기

 

4. 코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class Main {
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        
        String temp = br.readLine();
        int n = Integer.parseInt(temp);
        int max = 0;
        
        ArrayList<String> arr = new ArrayList<>();
        for(int i=0;i<n;i++) { //n번 반복
        	temp = br.readLine();
        	if(!arr.contains(temp)) { //중복 제거
        		arr.add(temp);
        		if(max<temp.length())
        			max = temp.length();
        	}
        }
        Collections.sort(arr); //일단 사전 순 정렬
        
        for(int i=0;i<=max;i++) {
        	for(int j=0;j<arr.size();j++) {
        		if(arr.get(j).length()==i)
        			sb.append(arr.get(j)+"\n");
        	}
        }
        
        System.out.println(sb);
	}
}

'ALGORITHM' 카테고리의 다른 글

백준 3052 나머지 (Java)  (0) 2023.01.17
백준 2869 달팽이는 올라가고 싶다 (Java)  (0) 2023.01.16
백준 10828 스택 (Java)  (0) 2023.01.14
백준 2309 일곱 난쟁이 (Java)  (0) 2023.01.13
백준 2839 설탕배달 (Java)  (1) 2023.01.12