๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 5052_์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก

๋ฟŒ์•ผ._. 2022. 3. 2. 23:26

Gold IV

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/5052)

<์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก>

๋ฌธ์ œ 

 

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

๊ธด๊ธ‰์ „ํ™”: 911
์ƒ๊ทผ: 97 625 999
์„ ์˜: 91 12 54 26

์ด ๊ฒฝ์šฐ์— ์„ ์˜์ด์—๊ฒŒ ์ „ํ™”๋ฅผ ๊ฑธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋‹ค. ์ „ํ™”๊ธฐ๋ฅผ ๋“ค๊ณ  ์„ ์˜์ด ๋ฒˆํ˜ธ์˜ ์ฒ˜์Œ ์„ธ ์ž๋ฆฌ๋ฅผ ๋ˆ„๋ฅด๋Š” ์ˆœ๊ฐ„ ๋ฐ”๋กœ ๊ธด๊ธ‰์ „ํ™”๊ฐ€ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ, ์ด ๋ชฉ๋ก์€ ์ผ๊ด€์„ฑ์ด ์—†๋Š” ๋ชฉ๋ก์ด๋‹ค. 
 

 

์ž…๋ ฅ

 

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ t๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ t ≤ 50) ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ์งธ ์ค„์—๋Š” ์ „ํ™”๋ฒˆํ˜ธ์˜ ์ˆ˜ n์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ n ≤ 10000) ๋‹ค์Œ n๊ฐœ์˜ ์ค„์—๋Š” ๋ชฉ๋ก์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์ „ํ™”๋ฒˆํ˜ธ์˜ ๊ธธ์ด๋Š” ๊ธธ์–ด์•ผ 10์ž๋ฆฌ์ด๋ฉฐ, ๋ชฉ๋ก์— ์žˆ๋Š” ๋‘ ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.

 

์ถœ๋ ฅ 

 

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ, ์ผ๊ด€์„ฑ ์žˆ๋Š” ๋ชฉ๋ก์ธ ๊ฒฝ์šฐ์—๋Š” YES, ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š” NO๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

- ์ดˆ๊ธฐ ์ฝ”๋“œ: ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค

 

import sys

if __name__=='__main__':
    t=int(input())

    for i in range(t):
        n=int(input())
        arr=[]
        min=10
        minarr=[]
        for j in range(n):
            str=sys.stdin.readline().replace(' ','').strip()
            arr.append(str)
            if min>len(str):
                min=len(str)
        for j in range(n):
            if len(arr[j])==min:
                minarr.append(arr[j])
            else:
                arr[j]=arr[j][:min]
        bool=False
        for j in minarr:
            if arr.count(j)>1:
                bool=True
        if bool==True:
            print("NO")
        else:
            print("YES")

 

 

๋ฌธ์ œ๋ฅผ ๋ณธ ํ›„ ์‰ฝ๊ฒŒ ์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. ํ•œ์ฐธ ๋™์•ˆ ์ƒ๊ฐํ•ด๋„ ์ด์œ ๋ฅผ ๋ชฐ๋ผ์„œ ๋ฉํ•˜๋‹ˆ ์žˆ์—ˆ๋‹ค.

์งˆ๋ฌธ ๊ฒ€์ƒ‰ ๊ฒŒ์‹œํŒ๊ณผ ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ๋‹ค ๋ด๋„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ๋‹ค. 

 

์ฒ˜์Œ์— ์ฐพ์€ ์ด์œ ๋Š” '97 625 999'์™€ ๊ฐ™์ด ๊ณต๋ฐฑ ์ฒ˜๋ฆฌ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ํ•˜์—ฌ ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•œ ํ›„ ์ œ์ถœํ•ด๋ดค์ง€๋งŒ ๊ฒฐ๊ณผ๋Š” ๋˜‘๊ฐ™์•˜๋‹ค.

 

โ“ ์™œ ํ‹€๋ ธ๋Š”๊ฐ€?

91123455

95

911

์ธ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜์—ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ๋Š” ์ž…๋ ฅ๋ฐ›์€ ์ „ํ™”๋ฒˆํ˜ธ ์ค‘ ๊ธธ์ด๊ฐ€ ๊ฐ€์žฅ ์งง์€ ๊ฐ’์— ๋Œ€ํ•ด์„œ๋งŒ ์ผ๊ด€์„ฑ์ด ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ๋ถ€๋ถ„์„ ์•Œ์•„์ฐจ๋ ธ์„ ๋•Œ '์™€' ๋ฐ–์— ๋‚˜์˜ค์ง€ ์•Š์•˜๋‹ค.

 

 

- my solution

import sys

if __name__=='__main__':
    t=int(input()) # ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜

    for i in range(t):
        n=int(input()) # ์ „ํ™”๋ฒˆํ˜ธ ์ˆ˜
        arr=[]
        for j in range(n):
            str=sys.stdin.readline().replace(' ','').strip() # ์ž…๋ ฅ
            arr.append(str)
        arr.sort() # ์ •๋ ฌ
        bool=False # ์ผ๊ด€์„ฑ check
        for j in range(n-1):
            if arr[j]==arr[j+1][:len(arr[j])]:
                bool=True
        if bool==True:
            print("NO")
        else:
            print("YES")

 

์œ„์—์„œ ๋ฐœ๊ฒฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ ฌ ํ›„ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํƒํ•˜์˜€๋‹ค. 

์™œ ๋‹ค๋“ค ์ •๋ ฌํ•˜๋Š”์ง€ ๋ชฐ๋ž๋Š”๋ฐ ์œ„์˜ ์ž˜๋ชป๋œ ์ด์œ ๋ฅผ ์•Œ๊ณ ๋‚˜๋‹ˆ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ •๋ ฌ ํ›„ arr[j] ๊ธธ์ด๋งŒํผ arr[j+1][:len(arr[j])]์™€ ๋น„๊ตํ•œ ํ›„ ๊ฐ™์œผ๋ฉด No๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

 


์ƒ๊ฐ๐Ÿค”

 

์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋„๋ก ๋…ธ๋ ฅํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.