728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 롤케이크를 잘랐을 때, 두 조각의 토핑의 종류 개수가 동일한지 판단해야 하는 문제이다.
인덱싱을 사용하여 계속적으로 슬라이싱 한 결과를 set로 바꾸어 토핑 종료의 개수를 판단해 보았지만 시간초과를 해결할 수 없었다.
하여 한 번에 set로 저장하는 방법을 생각해 보았다.
한 명은 처음에 케이크의 전체를 가지고 시작하며 나머지 한 명에게 하나씩 토핑을 주며 두 케이크의 조각 위 토핑의 종류 개수를 비교하고 일치하는 개수를 세어주는 방식으로 시간초과를 해결하였다.
- 한 명이 가지고 있는 토핑의 종류별 개수를 저장해 줄 딕셔너리를 생성한다. person1 = {}
- 모든 토핑을 하나씩 불러오며 for i in topping
- 이미 저장되어 있는 토핑이라면 개수만 증가해 주고 if (i in person1): person1[i] += 1
- 반면에 처음 나온 토핑이라면 새로 저장한다. else: person1[i] = 1
- 나머지 한 명이 가지고 있는 토핑의 종류를 저장해 줄 세트를 생성한다. person2 = set()
- 다시 한번 모든 토핑을 하나씩 불러오며 for i in topping
- 첫 번째 사람에서는 해당 토핑의 개수를 빼준다. person1[i] -= 1
- 만약 빼준 뒤, 해당 토핑의 개수가 없으면 해당 토핑 종류를 제거해 준다. if (person1[i] == 0): del person1[i]
- 두 번째 사람에는 해당 토핑의 종류를 더해준다. person2.add(i)
- 만약 두 사람이 가지고 있는 토핑의 종류 개수가 동일하면 if (len(person1) == len(person2))
- 일치하는 횟수를 증가시켜 준다. answer += 1
반응형
3. 소스코드
def solution(topping):
answer = 0
person1 = {}
for i in topping:
if (i in person1):
person1[i] += 1
else:
person1[i] = 1
person2 = set()
for i in topping:
person1[i] -= 1
if (person1[i] == 0):
del person1[i]
person2.add(i)
if (len(person1) == len(person2)):
answer += 1
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 숫자 게임 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.25 |
---|---|
[프로그래머스] 문자열 나누기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.23 |
[프로그래머스] 숫자 변환하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.21 |
[프로그래머스] 완주하지 못한 선수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.19 |
[프로그래머스] 체육복 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.15 |
[프로그래머스] [1차] 프렌즈4블록 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.13 |
[프로그래머스] [3차] 파일명 정렬 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.11 |
[프로그래머스] 등굣길 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.03 |