ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ณด์„ ์‡ผํ•‘

["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7]

programmers.co.kr

 

๋ฌธ์ œ ํ’€์ด

 ์ง„์—ด๋œ ๋ณด์„๋“ค ์ค‘ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ณด์„์„ ์ ์–ด๋„ 1๊ฐœ ์ด์ƒ ํฌํ•จํ•˜๋Š” ๊ฐ€์žฅ ์งง์€ ๊ตฌ๊ฐ„์„ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค. ์•ž์—์„œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ํƒ์ƒ‰์„ ํ•˜๊ฒŒ ๋˜๋ฉด ํšจ์œจ์„ฑ์„ ํ†ต๊ณผํ•  ์ˆ˜ ์—†๋‹ค. ๊ณ ๋ฏผ์„ ํ•˜๋‹ค๊ฐ€ ์†”๋ฃจ์…˜์„ ์ฐธ์กฐํ•˜์˜€๋Š”๋ฐ, `ํˆฌํฌ์ธํ„ฐ`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค.

 

 ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์€ ์†”๋ฃจ์…˜๊ณผ ๊ฐ™์ด ๊ตฌํ˜„ํ•˜๋ฉด, ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ํ‰์†Œ `ํˆฌํฌ์ธํ„ฐ`๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃจ์–ด๋ณด์ง€ ์•Š์•„ ํ’€์ด๋ฅผ ๋ณด๊ณ  ๋‚˜์„œ์•ผ ์ดํ•ด๋ฅผ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.๐Ÿค”

 

์ฝ”๋“œ

def solution(gems):
    start, end = 0, 0
    gem_num = len(set(gems))
    gem_dict = {gems[0]: 1}
    answer = [0,len(gems)]
    
    while start < len(gems) and end < len(gems):
        if len(gem_dict) < gem_num:
            if end == len(gems) - 1:
                break
            end += 1
            if gem_dict.get(gems[end]) is None:
                gem_dict[gems[end]] = 1
            else:
                gem_dict[gems[end]] += 1
        else:
            if end - start < answer[1] - answer[0]:
                answer = [start+1, end+1]
            if gem_dict[gems[start]] == 1:
                del gem_dict[gems[start]]
            else:
                gem_dict[gems[start]] -= 1
            start += 1
            
    return answer

 

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€