티스토리 뷰

www.acmicpc.net/problem/1181

 

1181번: 단어 정렬

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

www.acmicpc.net

 

🔶 StringcompareTo()

문자열의 사전적 값을 비교한다.

1. s1 == s2 : 0

2. s1 > s2 : 긍정값

3. s1 < s2 : 부정값

 

 

🔶1> HashMap, Iterator 사용

import java.io.*;
import java.util.*;
// 210328

/*
 # String의 compareTo()
 - 문자열의 사전적 값을 비교한다.
	1. s1 == s2 : 0
	2. s1 > s2 : 긍정값
	3. s1 < s2 : 부정값
*/

public class Main_BJ_1181_단어정렬 {
	public static void main(String[] args) throws Exception {
//		System.setIn(new FileInputStream("res/input_BJ_1181_단어정렬.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = stoi(br.readLine());
		HashSet<String> hash = new HashSet<>();
		
		String str;
		for(int i=0; i<N; i++) {
			str = br.readLine();
			hash.add(str);
		}
		
		String[] arr = new String[hash.size()];
		Iterator iter = hash.iterator();
		
		int idx = -1;
		while(iter.hasNext()) {
			arr[++idx] = (String) iter.next();
		}

		Arrays.sort(arr, new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				if(o1.length()==o2.length()) {
					return o1.compareTo(o2);
				}
				return Integer.compare(o1.length(), o2.length());
			}
		});
		
		// 출력
		StringBuilder sb = new StringBuilder();
		for(String s: arr) {
			sb.append(s + "\n");
		}
		System.out.println(sb.toString());
	
		br.close();
	}
	
	static int stoi(String str) {
		return Integer.parseInt(str);
	}
}

 

 

🔶2> 출력할 때 중복 검사

import java.io.*;
import java.util.*;
// 210328

public class Main_BJ_1181_단어정렬_2 {
	public static void main(String[] args) throws Exception {
//		System.setIn(new FileInputStream("res/input_BJ_1181_단어정렬.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = stoi(br.readLine());
		String[] arr = new String[N];
		
		for(int i=0; i<N; i++) {
			arr[i] = br.readLine();
		}
	
		// 정렬
		Arrays.sort(arr, new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				if(o1.length() == o2.length()) {
					return o1.compareTo(o2);
				}
				return Integer.compare(o1.length(), o2.length());
			}
		});
		
		// 중복 제거하며 출력
		StringBuilder sb = new StringBuilder();
		sb.append(arr[0] + "\n");
		for(int i=1; i<N; i++) {
			if(!arr[i-1].equals(arr[i])) {
				sb.append(arr[i] + "\n");
			}
		}
		System.out.println(sb.toString());
	
		br.close();
	}
	
	static int stoi(String str) {
		return Integer.parseInt(str);
	}
}

'코딩테스트 > 백준' 카테고리의 다른 글

[BJ] 16973. 직사각형 탈출  (0) 2021.04.01
[BJ] 2108. 통계학  (0) 2021.03.29
[BJ] 11651. 좌표 정렬하기2  (0) 2021.03.28
[BJ] 11650. 좌표 정렬하기  (0) 2021.03.28
[BJ] 14502. 연구소  (0) 2021.03.26
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함