[프로그래머스] 롤케이크 자르기

이정연·2023년 8월 31일
1

CodingTest

목록 보기
158/165

문제 링크

풀이

기본적인 자료구조 중 하나인 "집합"을 가져다 쓰면 풀리는 문제였다.

다만, 매번 집합을 새로 생성하면 시간 초과에 걸리니 2개의 집합(철수와 동생)을 만들어놓고 추가/소거 하는 방식으로 풀어야 한다.

코드

시간 초과 코드

def check(lst,i):
    if len(set(lst[:i])) == len(set(lst[i:])):
        return True
    return False

def solution(topping):
    answer = 0
    for i in range(1,len(topping)):
        if check(topping,i):
            answer += 1
    return answer

정답 코드

from collections import Counter

def solution(topping):
    answer = 0
    tmp1 = Counter(topping)
    tmp2 = set()
    for i in topping:
        tmp1[i] -= 1
        if not tmp1[i]:
            del tmp1[i]
        tmp2.add(i)
        if len(tmp1) == len(tmp2):
            answer += 1
    return answer

참조

https://school.programmers.co.kr/questions/45760

profile
0x68656C6C6F21

0개의 댓글