시간복잡도 때문에 애먹었던 문제..
문제 자체는 간단하지만 카운터 사용법을 잘 몰라서 헤맸다.
토핑이 여러 개 올라가 있는 롤케이크를 철수와 동생이 잘라 먹는데,
무조건 두 조각의 토핑 종류 개수가 같아야 하는 문제였다.
일단 동생에게 토핑을 다 주고, 하나씩 철수가 받아서 토핑 개수를 확인하는 방향으로 코드를 짰다.
명심하자 set은 시간복잡도 O(n)이라는 걸..!!!
from collections import Counter
def solution(topping):
answer = 0
# 형, 동생 토핑 리스트
a = {}
b = Counter(topping)
for i in range(len(topping)):
if topping[i] in a:
a[topping[i]] += 1
else:
a[topping[i]] = 1
b[topping[i]] -= 1
if b[topping[i]] == 0:
del b[topping[i]]
if len(a) == len(b):
answer += 1
# 시간 초과로 걸렸던 부분
# a_topping = set(a)
# b_topping = set(b)
# if len(a_topping) == len(b_topping):
# answer += 1
return answer
'공부하자! > 알고리즘' 카테고리의 다른 글
프로그래머스 | 방문 길이 Lv.2 Swift (0) | 2023.03.17 |
---|---|
프로그래머스 | 전화번호 목록 Lv.2 (0) | 2023.03.06 |
프로그래머스 124 나라의 숫자 - 파이썬 (0) | 2022.06.12 |
백준 2579 계단오르기 파이썬 - 다이나믹 프로그래밍(DP), 동적 계획법 (0) | 2022.02.26 |
백준 1463 1로 만들기 파이썬 - 다이나믹 프로그래밍(DP), 동적 계획법 (0) | 2022.02.26 |