내 인생은 개발 중
[프로그래머스] 롤케이크 자르기 - Python 본문
https://school.programmers.co.kr/learn/courses/30/lessons/132265
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
from collections import Counter
def solution(topping):
answer = 0
# 처음에 철수에게 토핑 다 주기
chulsu = Counter(topping)
brother = set()
for t in topping:
# 토핑 철수한테서 하나씩 빼서 동생에게 주기
chulsu[t] -= 1
brother.add(t)
# 해당 토핑의 갯수가 0이면 제거 (0이어도 남아있으면 길이에 포함되므로)
if chulsu[t] == 0:
chulsu.pop(t)
# 철수와 동생이 가진 토핑의 갯수가 같아지면 answer + 1
if len(chulsu) == len(brother):
answer += 1
return answer
💡알게 된 점💡
이 문제는 리스트 슬라이싱을 이용해서 풀 생각까지는 했었는데 토핑의 갯수를 어떻게 세어야 할 지 방법이 떠오르지 않아 결국 다른 사람의 풀이를 이용해서 풀었다. set을 이용해서 풀 수도 있지만 n의 최대 길이가 길기 때문에 그렇게 풀어도 시간초과가 나기 때문에 결국은 Counter를 이용해서 풀어야한다.
Counter를 이용하면 각 원소가 몇 번씩 나오는지 저장된 객체를 얻을 수 있다. Counter는 딕셔너리처럼 값을 갱신할 수 있으며, add와 pop을 이용해서 추가,제거한다.
아직 다양한 문제 풀이 방법에 익숙해지지 않은 것 같다 ㅜㅜ 최대한 많이 풀어서 다양한 문제 풀이 방식을 스스로 구현해낼 수 있게 해야겠땨!
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 주차 요금 계산 - Python (0) | 2024.05.22 |
---|---|
[프로그래머스] 짝지어 제거하기 - Python (0) | 2024.05.20 |
[프로그래머스] 피보나치 수 - Python (0) | 2024.05.18 |
[프로그래머스] 피로도 - Python (0) | 2024.05.16 |
[프로그래머스] 다음 큰 숫자 - Python (0) | 2024.05.16 |
Comments