๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm/Programmers

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

 

 

 

๋ฌธ์ œ 

 

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

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

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

 

 

 

์ œํ•œ์‚ฌํ•ญ

 

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

  • ๊ฐ ์ „ํ™”๋ฒˆํ˜ธ์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 20 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๊ฐ™์€ ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ์ค‘๋ณตํ•ด์„œ ๋“ค์–ด์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

 

ํ•ด์„ค ์ฝ”๋“œ 
def solution(phone_book):
    hash_map = {}
    for phone_num in phone_book:
        hash_map[phone_num] = 1
    print(hash_map)
    
    for phone_num in phone_book:
        temp = ''
        for num in phone_num:
            temp += num
            if temp != phone_num and temp in hash_map:
                return False
    return True
๋ถ„์„ > ์ด๋ฒˆ ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด ํ•ด์‹œ ์˜ ๊ฐœ๋…์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ํ•ด์‹œ๋ผ๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด key์™€ value๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ์‚ฌ์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ํ•˜๋‹จ์˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, phone_book์˜ ๊ฐ ์›์†Œ๋“ค๋กœ ํ•ด์‹œ๋งต์„ ๋งŒ๋“ค์–ด์ค€๋‹ค. ์—ฌ๊ธฐ์„œ value๋Š” ์›์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ, ์ด๋Š” ๋‚˜์ค‘์— ์›์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผ ํ•  ๋•Œ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์–ตํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, phone_book[1]์˜ ์ ‘๋‘์–ด๋Š” 6,67,678 ์ธ๋ฐ (์ „์ฒด ๋‹จ์–ด๊ฐ€ ์ ‘๋‘์–ด๊ฐ€ ๋˜๋ฉด ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ ์ ‘๋‘์–ด๋ฅผ ํฌํ•จํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ์ ‘๋‘์–ด๊ฐ€ ์ž๊ธฐ ์ž์‹ ์ด ๋˜๋Š” ์ƒํ™ฉ์€ ๋ฐฐ์ œํ•ด์•ผ ํ•œ๋‹ค) ํ•ด์‹œ๋งต์„ ๋ณด๋ฉด '6'์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— phone_book[1]์€ ์ ‘๋‘์–ด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๋‹จ์–ด๊ฐ€ ๋œ๋‹ค. ํ•ด์‹œ์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์ผ๋ฐ˜ ๋ฐฐ์—ด์˜ ์„ ํ˜•ํƒ์ƒ‰๋ณด๋‹ค ๋‚ฎ๊ณ  ๋ชจ๋“  ๊ฒฝ์šฐ๋Š” ์•„๋‹ˆ์ง€๋งŒ ๋Œ€์ฒด๋กœ O(1)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ์— ํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ฐ˜ ๋ฐฐ์—ด์˜ ์„ ํ˜•ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•  ๋•Œ๋ณด๋‹ค ํ›จ์”ฌ ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

์ถœ์ฒ˜ : https://www.youtube.com/watch?v=4-iyppqNCyg

 

 

 

 

 

 

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

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

programmers.co.kr