Algorithm

๋ฐฑ์ค€ 1181 ๋‹จ์–ด์ •๋ ฌ With Java

hyunjun's developing ๐Ÿฃ 2024. 1. 14. 20:58

 

 

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

 

1181๋ฒˆ: ๋‹จ์–ด ์ •๋ ฌ

์ฒซ์งธ ์ค„์— ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 20,000) ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด๊ฐ€ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 50์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

www.acmicpc.net

 

 

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import java.util.Scanner;
import java.util.Arrays;
import java.util.Comparator;
 
 
public class Main {
    public static void main(String[] args) {
    
        Scanner in = new Scanner(System.in);
 
        int N = in.nextInt();
        String[] arr = new String[N];
 
        in.nextLine();    
        for (int i = 0; i < N; i++) {
            arr[i] = in.nextLine();
        }
        
        Arrays.sort(arr, new Comparator<String>() {
            public int compare(String s1, String s2) {
            
 
                if (s1.length() == s2.length()) {
                    return s1.compareTo(s2);
                } 
                
                else {
                    return s1.length() - s2.length();
                }
            }
        });
 
 
        System.out.println(arr[0]);
        
        for (int i = 1; i < N; i++) {
 
                        if (!arr[i].equals(arr[i - 1])) {
                System.out.println(arr[i]);
            }
        }
    }
 
}
cs

 

๋จผ์ € ์Šค์บ๋„ˆ๋ฅผ ์„ ์–ธ์„ ํ•ด์ค€๋‹ค. ๊ทธ ๋‹ค์Œ ์Šค์บ๋„ˆ๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์šฉ์žํ•œํ…Œ ๋‹จ์–ด์˜ ๊ฐฏ์ˆ˜๋ฅผ ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋‹ค. ๊ทธ ๋‹ค์Œ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์ฃผ๊ณ  N๋งŒํผ for๋ฌธ์„ ํ†ตํ•ด์„œ ๋ฐฐ์—ด์— ๊ทธ ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค. in.nextLine();์„ ์“ด ์ด์œ ๋Š” ์ด๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  ๋ฐ”๋กœ for๋ฌธ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ๊ฐœํ–‰๋ฌธ์ž๊ฐ€ arr[0]์— ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ ๋‹ค์Œ new Comparator<String>()๋กœ Arrays.sort์˜ Comparator๋ฅผ ์žฌ์ •์˜ ํ•ด์ค€๋‹ค.

 

compare ๋ฉ”์†Œ๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฆฌํ„ดํ˜•์ด intํ˜•์ด๋‹ค. 3๊ฐ€์ง€์˜ ๋ฆฌํ„ด ๊ฐ’์ด ์žˆ๋Š”๋ฐ ์ด ๋ฆฌํ„ด ๊ฐ’์— ์˜ํ•ด ์œ„์น˜๋ฅผ ๋ฐ”๊ฟ€์ง€ ๋ง์ง€, ๋ฐ”๊พผ๋‹ค๋ฉด ์–ด๋””๋กœ ๋ฐ”๊ฟ€์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. 3๊ฐ€์ง€ ๋ฆฌํ„ด๊ฐ’์€ 1. ์–‘์ˆ˜, 2. 0, 3. ์Œ์ˆ˜์ด๋‹ค. 

 

์–‘์ˆ˜์ผ ๊ฒฝ์šฐ ๋‘ ์œ„์น˜๋Š” ๋ฐ”๋€Œ๊ณ  0๊ณผ ์Œ์ˆ˜์ผ ๊ฒฝ์šฐ์ด๋ฉด ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฐ์—ด์— {3,4,5}๋ผ๋Š” ๊ฐ’์ด ์žˆ์œผ๋ฉด

 

3 - 4๋ฅผ ์ง„ํ–‰์„ ํ•œ๋‹ค. ์Œ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ๋งŒ์•ฝ {4,3,5}์˜€๋‹ค๋ฉด? 4 - 3์€ ์–‘์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— {3,4,5}๋กœ ๋ฐ”๋€Œ์—ˆ์„ ๊ฒƒ์ด๋‹ค. 

 

๊ทธ๋Ÿผ ๊ทธ ๋‹ค์Œ ๋‹จ์–ด ๊ธธ์ด๊ฐ€ ๊ฐ™์œผ๋ฉด s1.compareTo(s2)๋ฅผ ํ†ตํ•ด์„œ ๋‹จ์–ด๋ฅผ ์‚ฌ์ „์ˆœ์œผ๋กœ ์ •๋ ฌ์„ ํ•œ๋‹ค.(๋ฌธ์ œ์˜ ์กฐ๊ฑด)

 

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹จ์–ด์˜ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ๋‘ ๋‹จ์–ด์˜ ๊ธธ์ด๋ฅผ ๋นผ์ฃผ์–ด์„œ ๋น„๊ต๋ฅผ ํ•ด์ฃผ์–ด. 0์ธ์ง€, ์–‘์ˆ˜์ธ์ง€, ์Œ์ˆ˜์ธ์ง€ ํŒ๋ณ„์„ ํ•ด์ค€๋‹ค