Post

๐Ÿน ๋น„์Šทํ•œ ๋‹จ์–ด

1. ๋ฌธ์ œ ๋งํฌ

2469๋ฒˆ: ๋น„์Šทํ•œ ๋‹จ์–ด


2. ์ฝ”๋“œ

Python3 34072kb 824ms

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
45
from collections import Counter

N = int(input())
words = []
max_prefix_len = 0  # ์ ‘๋‘์‚ฌ์˜ ์ตœ๋Œ€ ๊ธธ์ด
for _ in range(N):
    word = input()
    max_prefix_len = max(max_prefix_len, len(word))
    words.append(word)

# M์˜ ๊ธธ์ด์˜ ์ ‘๋‘์‚ฌ ๋งŒ๋“ค๊ณ  ํ™•์ธ 
def check_prefix(M):
    prefix = []
    for w in words:
        prefix.append(w[:M])
    dict_prefix = Counter(prefix)
    
    result = []
    for key in dict_prefix.keys():
        if dict_prefix[key] > 1:
            result.append(key)
    return result

prefix = []
# ๊ฐ€์žฅ ๊ธด ์ ‘๋‘์‚ฌ ์ฐพ๊ธฐ
while max_prefix_len:
    prefix = check_prefix(max_prefix_len)
    if prefix:
        break
    max_prefix_len -= 1

idx = 0
# ์ ‘๋‘์‚ฌ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ€์žฅ ์ฒซ ๋‹จ์–ด ์ฐพ๊ธฐ(์ ‘๋‘์‚ฌ๋„ ์ฐพ๊ธฐ)
for i in range(len(words)):
    if words[i][:max_prefix_len] in prefix:
        prefix = words[i][:max_prefix_len]
        idx = i + 1
        print(words[i])
        break

# ํ™•์ •๋œ ์ ‘๋‘์‚ฌ์— ํ•ด๋‹นํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ๋‹จ์–ด ์ฐพ๊ธฐ
for i in range(idx, len(words)):
    if words[i][:max_prefix_len] == prefix:
        print(words[i])
        break


3. ํ•ด์„ค

๋‹จ์–ด์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ตœ๋Œ€ 20000๊ฐœ ์ด๋ฏ€๋กœ 2๊ฐœ์˜ ๋‹จ์–ด์”ฉ ์ง์„์ง€์–ด ๊ฐ ์•ŒํŒŒ๋ฒณ์„ ํ™•์ธํ•˜์—ฌ ์ ‘๋‘์‚ฌ๋ฅผ ์ฐพ๋Š” 3์ค‘ ์ค‘์ฒฉ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜๋ฏ€๋กœ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•ด๋ดค๋‹ค.

๋ชจ๋“  ๋‹จ์–ด๋ฅผ ๊ณตํ†ต์ ์ธ ๊ธธ์ด๋กœ ์ž˜๋ผ ์ค‘๋ณต๋˜๋Š” ๋‹จ์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์ด ๊ฒน์น˜๋Š” ์ ‘๋‘์‚ฌ๊ฐ€ ๋  ๊ฒƒ์ด๊ณ  ํ•ด๋‹น ์ ‘๋‘์‚ฌ์˜ ๊ธธ์ด๊ฐ€ ๊ฐ€์žฅ ๊ธธ๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋‹จ์–ด์—์„œ ๊ฐ€์žฅ ๊ธด ๋‹จ์–ด๋ฅผ ์ ‘๋‘์‚ฌ์˜ ์ตœ๋Œ€ ๊ธธ์ด๋กœ ๋‘๊ณ  ๋ฐ˜๋ณตํ•  ๋•Œ๋งˆ๋‹ค ๊ธธ์ด๋ฅผ 1์”ฉ ์ค„์—ฌ๊ฐ€๋ฉฐ ๊ฐ€์žฅ ๊ธด ์ ‘๋‘์‚ฌ์˜ ๊ธธ์ด๋ฅผ ์ฐพ๋Š”๋‹ค.

check_prefix์—์„œ ์ž…๋ ฅ๋œ ์ ‘๋‘์‚ฌ์˜ ๊ธธ์ด๋งŒํผ ๋‹จ์–ด๋ฅผ ์ž๋ฅธ ํ›„ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋งŒ๋“ค์–ด ์ ‘๋‘์‚ฌ์˜ ๊ฐœ์ˆ˜๊ฐ€ 1์ด ๋„˜๊ฒŒ๋˜๋Š” ์ ‘๋‘์‚ฌ๊ฐ€ ๊ฐ€์žฅ ๊ธด ์ ‘๋‘์‚ฌ๊ฐ€ ๋œ๋‹ค. ์ด๋•Œ ์ด๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์ ‘๋‘์‚ฌ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์ผ ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋ฐฐ์—ด์— ๋‹ด์•„๋‘”๋‹ค.

์ ‘๋‘์‚ฌ๋ฅผ ์ฐพ๊ณ  ๋‚œ ํ›„ ์ž…๋ ฅ๋ฐ›์€ ์ˆœ์„œ๋Œ€๋กœ ๋‹จ์–ด๋ฅผ ํ™•์ธํ•˜๊ณ  ์ ‘๋‘์‚ฌ ๋ฐฐ์—ด์— ํฌํ•จ๋œ ์ ‘๋‘์‚ฌ๋ฅผ ๊ฐ€์ง„ ๋‹จ์–ด๋ฅผ ์ฐพ๊ณ  ์ถœ๋ ฅํ•œ๋‹ค. ์ด๋•Œ ์–ด๋–ค ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ• ์ง€ ํ™•์ •๋œ๋‹ค.(์ ‘๋‘์‚ฌ ๋ฐฐ์—ด ์†์—์„œ ์ž…๋ ฅ ์ˆœ์„œ๊ฐ€ ๊ฐ€์žฅ ๋‹จ์–ด์— ํฌํ•จ๋œ ์ ‘๋‘์‚ฌ)

๋ฐœ๊ฒฌ๋œ ์œ„์น˜ ๋‹ค์Œ๋ถ€ํ„ฐ ์ ‘๋‘์‚ฌ๊ฐ€ ํฌํ•จ๋œ ๊ฐ€์žฅ ์•ž ์ˆœ์„œ ๋‹จ์–ด๋ฅผ ํƒ์ƒ‰ํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค.

This post is licensed under CC BY 4.0 by the author.