[Python - ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level2] ์ „ํ™”๋ฒˆํ˜ธ

2021. 1. 19. 02:05ใ†๐Ÿ“š Algorithm/๐Ÿ’ช๐Ÿป Python ๋ฌธ์ œ ํ’€์ด

๋ฐ˜์‘ํ˜•
 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก

์ „ํ™”๋ฒˆํ˜ธ๋ถ€์— ์ ํžŒ ์ „ํ™”๋ฒˆํ˜ธ ์ค‘, ํ•œ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ์˜ ์ ‘๋‘์–ด์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒฝ์šฐ, ๊ตฌ์กฐ๋Œ€ ์ „ํ™”๋ฒˆํ˜ธ๋Š” ์˜์„์ด์˜ ์ „ํ™”๋ฒˆํ˜ธ์˜ ์ ‘๋‘์‚ฌ์ž…๋‹ˆ๋‹ค. ๊ตฌ์กฐ

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

์ „ํ™”๋ฒˆํ˜ธ๋ถ€์— ์ ํžŒ ์ „ํ™”๋ฒˆํ˜ธ ์ค‘, ํ•œ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ์˜ ์ ‘๋‘์–ด์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.
์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒฝ์šฐ, ๊ตฌ์กฐ๋Œ€ ์ „ํ™”๋ฒˆํ˜ธ๋Š” ์˜์„์ด์˜ ์ „ํ™”๋ฒˆํ˜ธ์˜ ์ ‘๋‘์‚ฌ์ž…๋‹ˆ๋‹ค.

  • ๊ตฌ์กฐ๋Œ€ : 119
  • ๋ฐ•์ค€์˜ : 97 674 223
  • ์ง€์˜์„ : 11 9552 4421

์ „ํ™”๋ฒˆํ˜ธ๋ถ€์— ์ ํžŒ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด phone_book ์ด solution ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์–ด๋–ค ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ์˜ ์ ‘๋‘์–ด์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฉด false๋ฅผ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด true๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

์ œํ•œ ์‚ฌํ•ญ

  • phone_book์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 1,000,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ ์ „ํ™”๋ฒˆํ˜ธ์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 20 ์ดํ•˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

ํ’€์ด ๊ณผ์ •

ํ•ด์‰ฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ’€์–ด์•ผ ํšจ์œจ์„ฑ์„ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค. ํ•ด์‰ฌ ์—ฐ์Šต ๋ฌธ์ œ์•ˆ์— ์กด์žฌํ•˜์—ฌ ๋”•์…”๋„ˆ๋ฆฌ๋กœ phone_book์„ ๋ฐ”๊ฟจ๋‹ค. 

์ ‘๋‘์‚ฌ๊ฐ€ ๊ฐ™์€์ง€ ํŒ๋ณ„ํ•˜๋Š” ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋กœ ์งœ์•ผํ• ๊นŒ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ list์˜ ์Šฌ๋ผ์ด์‹ฑ์„ ์ด์šฉํ•˜๋ฉด ๋˜๊ฒ ๋‹ค ์ƒ๊ฐ์ด ๋“ค์–ด slice๋กœ ๋น„๊ตํ•  ๋ฒˆํ˜ธ์™€, ๊ธฐ์ค€์ด ๋  ๋ฒˆํ˜ธ ์ค‘ ๋น„๊ตํ•  ๋ฒˆํ˜ธ๋ฅผ ๊ธฐ์ค€์ด ๋  ๋ฒˆํ˜ธ์˜ ํฌ๊ธฐ๋งŒํผ slicing ํ•˜์—ฌ ๊ฐ™์€์ง€ ๋‹ค๋ฅธ์ง€๋ฅผ ๊ตฌ๋ณ„ํ•˜์˜€๋‹ค. 

ํšจ์œจ์„ฑ๊ณผ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค 1~6, 9~10์€ ํ†ต๊ณผํ•˜์˜€์ง€๋งŒ ๊ณ„์† 8,9๊ฐ€ ์‹คํŒจ๊ฐ€ ๋–ด๋‹ค. ์™œ ๊ทธ๋Ÿฐ์ง€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์งˆ๋ฌธ์„ ๋ณด๋‹ˆ sort๋ฅผ ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋กœ ๋ณด์—ฌ phone_book์„ sortํ•˜๊ณ  ์‹œ์ž‘ํ•˜์˜€๋”๋‹ˆ ๋ชจ๋‘ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

def solution(phone_book):
    phone_book.sort()
    phone_book = dict([(index, list(phone)) for index, phone in enumerate(phone_book)])
    for i in range(len(phone_book)):
        size = len(phone_book[i])
        for j in range(i+1, len(phone_book)):
            if len(phone_book[j]) >= size:
                if phone_book[j][0:size] == phone_book[i]:
                    return False
    else:
        return True


if __name__ == "__main__":
    print(solution(["0", "97674223", "1195524421"]))
    print(solution(["123","456","789"]))
    print(solution(["123", "456", "4567", "999"]))
    print(solution(["113","44","4544"]))

 

 

๋ฐ˜์‘ํ˜•