hahn

단계별로 풀어보기(정렬 - 단어 정렬) 본문

코딩테스트 연습/백준(JAVA)

단계별로 풀어보기(정렬 - 단어 정렬)

hahn 2021. 9. 18. 10:55
728x90
반응형

1181번: 단어 정렬 (acmicpc.net)

 

1181번: 단어 정렬

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

www.acmicpc.net

공유 소스 보기 (acmicpc.net)

 

공유 소스 보기

 

www.acmicpc.net

더보기
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

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 wordCount = Integer.parseInt(br.readLine());
		
		List<String> wordList = new ArrayList<String>();
		
		for(int i = 0; i < wordCount; i++) {
			
			wordList.add(br.readLine());
			
		}
		
		Collections.sort(wordList, new Comparator<String>() {

			@Override
			public int compare(String o1, String o2) {
				
				if(o1.length() > o2.length()) {
					
					return 1;
					
				}else if(o1.length() == o2.length()) {
					
					return o1.compareTo(o2);
					
				}else {
					
					return -1;
					
				}
				
			}
		
		});
		
		
		for(int i = 0; i < wordList.size(); i++) {
            
			if(i > 0) if(wordList.get(i - 1).equals(wordList.get(i))) continue;	
            
			bw.write(wordList.get(i) + "\n");
			
		}
		
		bw.close();
        
    }
    
}

 

예전에 js에서 sort 한 적 있었는데

 

java에서도 같은 방식으로 진행할 수 있어

 

length 기준으로 정렬하고,

 

만약 length가 동일하다면 compareTo를 이용하여

 

사전 순으로 정렬했다.

728x90
반응형