Coding Study/Programmers
[프로그래머스] lv2 롤케이크 자르기 - Python 파이썬
머준
2023. 8. 2. 10:45
[프로그래머스] lv2 롤케이크 자르기
[출처 - 프로그래머스 lv2 롤케이크 자르기]
https://school.programmers.co.kr/learn/courses/30/lessons/132265
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
제한 사항
입출력 예
풀이
def solution(topping):
answer = 0
middle = 0
while middle < len(topping):
if len(set(topping[:middle])) == len(set(topping[middle:])):
answer += 1
middle += 1
return answer
처음 짰던 코드는 위와 같다. 롤케이크를 자르는 기준의 인덱스를 +1 씩 해주면서 동일한 토핑 갯수를 확인해주면서 같으면 answer+1 해주는 방식이다. 결과는 시간초과 파티..
[ 다시 짠 코드 ]
def solution(topping):
answer = 0
chulsu_cake = {}
bro_cake = {}
# 일단 철수한테 케이크 토핑을 다 줌
for t in topping:
if t in chulsu_cake:
chulsu_cake[t] += 1
else:
chulsu_cake[t] = 1
for t in topping:
# 철수 케이크 토핑 개수 = 동생 케이크 토핑 개수 같으면 answer+1
if len(chulsu_cake) == len(bro_cake):
answer += 1
# 동생한테 t 토핑 없으면 철수 토핑을 하나를 동생한테 줌
chulsu_cake[t] -= 1
if t not in bro_cake:
bro_cake[t] = 1
# 철수도 가지고 있지 않은 토핑이면 해당 인덱스 토핑 삭제
if chulsu_cake[t] == 0:
del chulsu_cake[t]
return answer
1. 일단 철수한테 케이크 토핑을 다 준다.
2. 철수 케이크 토핑 개수와 동생 케이크 토핑 개수가 같으면 answer+1
3. 동생한테 t 토핑 없으면 철수 토핑 하나를 동생한테 줌
4. 철수도 가지고 있지 않은 토핑이면 철수 케이크의 해당 인덱스 토핑 삭제