IT 기획의 길

백준 1181번 단어정렬 [JAVA] 본문

알고리즘(백준)/정렬

백준 1181번 단어정렬 [JAVA]

완벽하기 쉽지 않지만 완벽해지려고 노력해야 한다 2020. 12. 26. 18:46

 

알고리즘 설계:

1. 같은 단어가 여러 번 입력된 경우 한번만 출력되게 하려면 중복을 허용하지않는 set을 사용한다

2. 출력을 할때 길이 순으로 오름차순 정렬을 한다

3. 만약 길이가 같은 문자라면 사전 순으로 출력한다 

 

 

 

import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		int n=scan.nextInt();
		HashSet<String> str1=new HashSet<>();
		for(int i=0;i<n;i++) {
			String A="";
			A=scan.next();
			str1.add(A);
		}

		ArrayList<String> str2=new ArrayList<>(str1); //set을 ArrayList에 담는다

		Collections.sort(str2,new Comparator<String>() {
			public int compare(String s1,String s2) { 
				if(s1.length()>s2.length())  //문자 길이로 정렬
					return 1;
				else if(s1.length()<s2.length())
					return -1;
				else // 길이가 같은 문자는 사전순으로 정렬 
					return s1.compareTo(s2);
			}
		});
		
		for(String s:str2) {
			System.out.println(s);
		}
	}
}

'알고리즘(백준) > 정렬' 카테고리의 다른 글

백준 10814번 나이순 정렬 [JAVA]  (0) 2020.12.26
백준 1026번 보물 [JAVA]  (0) 2020.12.26
백준 11650번 좌표 정렬하기 [JAVA]  (0) 2020.12.26
백준 11399번 ATM [JAVA]  (0) 2020.12.25