풀이
- 처음 접할때는 두 번째 풀이와 같이 작성하면서도 시간 초과가 발생할 것 같았다.
- 다만 해당 방법 이외에 어떻게 접근해야 할지 잘 떠오르지 않아서
- 힌트를 확인해보았는데
- 지금까지는 비교 대상에 대한 구조를 동일하게 하는 것을 습관으로 여겼다.
- 예를 들어 배열이면 배열끼리, 딕셔너리면 딕셔너리, 집합이면 집합끼리 식으로.
- 그런데 해당 힌트는 딕셔너리와 집합을 활용하면 된다고 하기에
- 처음에는 어떤 방법인지에 대해 생각을 해봤는데
- 딕셔너리에서 topping 요소를 하나씩 차감하는데 이때 값이 더이상 존재하지 않을 경우엔
- 딕셔너리 자체에서 key값을 제거하고
- 반복문을 돌때마다 해당 토핑을 철수라는 집합에 추가하게 되면 문제를 해결할 수 있다.
from collections import Counter
def solution(topping):
result = 0
bro = Counter(topping)
chul = set()
for i in topping:
bro[i] -= 1
if not bro[i]: del bro[i]
chul.add(i)
if len(bro) == len(chul): result += 1
return result
시간 초과 코드
def solution(topping):
result = 0
for i in range(1,len(topping)):
if set(topping[:i]) == set(topping[i:]): result += 1
return result
'알고리즘' 카테고리의 다른 글
[프로그래머스, 자바스크립트] 삼각형의 완성조건 (1) (0) | 2024.03.25 |
---|---|
[프로그래머스, 파이썬] 숫자 변환하기 (0) | 2024.03.22 |
[프로그래머스, 자바] 약수의 합 (0) | 2024.03.20 |
[프로그래머스, 자바] 자릿수 더하기 (0) | 2024.03.20 |
[프로그래머스, 자바] 유한소수 판별하기 (0) | 2024.03.20 |