배고픈 개발자 이야기
[ 연습문제 ] 롤케이크 자르기 본문
728x90
- 문제 -
철수가 동생이랑 롤케이크를 나눠 먹는다.
롤케이크 위에 토핑을 일렬로 올리는데, 케잌의 크기와 토핑의 개수의 상관없이
잘랐을 때, 토핑의 종류가 같으면 공평하게 나눈것이고, 공평하게 자르는 경우의 수를 반환하면 된다.
- 풀이 -
1. 처음엔 왼쪽, 오른쪽으로 나누어 원소를 넣고 빼며 set, list, len을 사용하였더니 시간초과가 떳다.
2. 인터넷을 슬쩍 참고하여 리스트의 개수를 dict로 변경해주는 Counter를 사용하여 효율성을 올렸다.
3. 왼쪽은 set에 계속 더해주고, 오른쪽 조각은 dict에서 값을 빼주는 식으로 갱신하여, 길이를 비교하도록 하였다.
- 결과 -
100점~
# programmers exercise task
# https://school.programmers.co.kr/learn/courses/30/lessons/132265
from collections import Counter
def solution(topping):
answer = 0
left_ctr = set()
right_ctr = Counter(topping)
for topp in topping:
left_ctr.add(topp)
right_ctr[topp] -= 1
if not right_ctr[topp]:
right_ctr.pop(topp)
if len(left_ctr) == len(right_ctr):
answer += 1
if len(left_ctr) > len(right_ctr):
break
return answer
'알고리즘 문제 > PROGRAMMERS' 카테고리의 다른 글
[그래프] 가장 먼 노드 (0) | 2022.11.09 |
---|---|
[2021 KAKAO BLIND] 신규 아이디 추천 (0) | 2021.10.07 |
[2020 kakao blind] 괄호변환 (0) | 2021.08.12 |
[2018 kakao blind] 뉴스클러스터링 (0) | 2021.08.10 |
[2021 카카오 인턴] 수식 최대화 (0) | 2021.08.07 |
Comments