๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

[Python/์•Œ๊ณ ๋ฆฌ์ฆ˜] ํ•ด์‹œ Hash ์™„์ „์ •๋ณต(ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก)

by eugene663 2026. 1. 4.

์ด๋ฒˆ ์ฐจ๋ก€๋Š” ์—ญ์‹œ๋‚˜ ์ฝ”ํ…Œ์— ์ž์ฃผ ์ถœ์ œ๋˜๋Š” ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

์ฝ”ํ…Œ ๋งž์ถคํ˜• ๊ฐœ๋… ์„ค๋ช…

Hash๋Š” key: value๋ฅผ ๊ฐ–๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

์ „ํ™”๋ฒˆํ˜ธ๋ถ€์™€ ๊ฐ™๋‹ค. -> ๊ฒ€์ƒ‰์ฐฝ์— ์ด๋ฆ„(key)๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ๊ฒฐ๊ณผ(value)๊ฐ€ ๋‚˜์˜จ๋‹ค.

์ด๊ฒŒ ์—†๋‹ค๋ฉด, ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด, ๋ชจ๋“  ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•ด์•ผํ•จ. -> ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ๋‹ค๋ฉด ์ •๋‹ต์ด ๋  ์ˆ˜ ์—†๋‹ค.

HashMap์„ ๋งŒ๋“ค๋ฉด ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ!

* Hash๋Š” ๋ชจ๋“  ์ž๋ฃŒ๊ตฌ์กฐ์— ์‚ฌ์šฉ๊ฐ€๋Šฅ *

 

๊ธฐ์–ตํ•ด์•ผํ•  ํ•จ์ˆ˜: put, get, getOrDefualt

get(์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ณ€์ˆ˜): ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ์—†์œผ๋ฉด error

getOrDefault(์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ณ€์ˆ˜, false): ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ์—†์œผ๋ฉด false ๋ฐ˜ํ™˜

 

๊ทธ๋Ÿผ, ์–ธ์ œ ํ•ด์‹œ๋ฅผ ์จ์•ผํ• ๊นŒ?

String์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผํ•  ๋•Œ์ด๋‹ค. ๋Œ€๋ถ€๋ถ„  Key๊ฐ€ String ์ธ ๊ฒƒ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์ž๋ฉด,

1. ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜

์„ ์ˆ˜ ์ด๋ฆ„ -> ์™„์ฃผ ์—ฌ๋ถ€ ๊ด€๋ฆฌํ•ด์•ผํ•œ๋‹ค. 

String Key : bool Value๋กœ ๊ด€๋ฆฌํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

 

2.์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ

๊ฒŒ์‹œํŒ ์‚ฌ์šฉ์ž ์ค‘ ์‹ ๊ณ  ๋‹นํ•œ ์‚ฌ๋žŒ์„ ๊ธฐ์ค€์œผ๋กœ ์‹ ๊ณ ์ž ๋ชฉ๋ก์„ ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

์‹ ๊ณ ๋‹นํ•œ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์ธ String์ด ๊ธฐ์ค€์ด๋‹ˆ๊นŒ, ํ•ด์‹œ๋ฅผ ์จ์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์•ผํ•œ๋‹ค.

String Key: ArrayList<String> Value๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋ฉด ๋œ๋‹ค.

 

3. ์œ„์žฅ

์˜ท์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๊ฐ๊ฐ ๋ช‡๊ฐœ์˜ ์˜ต์…˜์ด ์žˆ๋Š”์ง€ ์„ธ๋Š” ๋ฌธ์ œ์ด๋‹ค.

์˜ท์˜ ์ข…๋ฅ˜๊ฐ€ String์ด๋ฏ€๋กœ String Key: Integer Value๋กœ ๊ด€๋ฆฌํ•˜๋Š” ํ•ด์‹œ ๋ฌธ์ œ์ด๋‹ค.

 

์ฆ‰, String ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ๋‹จ์ˆœ๋ฐฐ์—ด์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, Hash๋ฅผ ์“ฐ์ž!

 

์˜ˆ์ œ๋กœ ์•Œ์•„๋ณด๊ธฐ

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

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

๋ฌธ์ œ ์ž์„ธํžˆ ๋ณด๊ธฐ

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 

์˜ค๋‹ต๋…ธํŠธ

์ฒ˜์Œ์—๋Š” ์ด์ค‘ for๋ฌธ์œผ๋กœ ํ•˜๋‚˜์”ฉ ์ฒดํฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์˜ˆ์‹œ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค 3๊ฐœ์—์„  ํ†ต๊ณผํ–ˆ์ง€๋งŒ, ์ฑ„์ ์‹œ์— 2๊ฐœ์˜ ๊ฒฝ์šฐ์—์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋–ด๋‹ค.. ใ…œ

์™œ๋ƒํ•˜๋ฉด ๋ฌธ์ž์—ด ๋น„๊ต๋ฅผ String A in String B ๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์œผ๋กœ ๋ณด์—ฌ์„œ, startswith ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด๋ดค์œผ๋‚˜ 1๊ฐœ์˜ ๊ฒฝ์šฐ์—์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋–ด๋‹ค.

๊ทธ๋ž˜์„œ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ key๋กœ ๊ด€๋ฆฌํ•˜๋Š” ํ•ด์‹œ๋งต์„ ๋งŒ๋“ค์–ด ํ•ด๊ฒฐํ–ˆ๋‹ค.

def solution(phone_book):
    ## ํ•ด์‹œ๋งต ์ƒ์„ฑ: key - ์ „ํ™”๋ฒˆํ˜ธ๋ถ€, value - 1
    hash_map = {}
    for num in phone_book:
        hash_map[num] = 1
        
    ## ์ ‘๋‘์–ด ์ฐพ๊ธฐ
    for num in phone_book:
        jubdoo = ''
        for n in num:
            jubdoo += n
            if jubdoo in hash_map and jubdoo!=num:
                return False
    
    return True

 

 

์•„์ง ํ•ด์‹œ๋งต์ด ๋‚ฏ์„ค์ง€๋งŒ ๋” ์—ด์‹ฌํžˆ ์—ฐ์Šตํ•ด๋ณด์ž!