1def solution(topping):
2 answer = 0
3 length = len(topping)
4 toppingA = []
5 toppingB = []
6 setA = set()
7 setB = set()
8
9 for i in range(length-1):
10 setA.add(topping[i])
11 setB.add(topping[length-i-1])
12 toppingA.append(len(setA))
13 toppingB.append(len(setB))
14
15 toppingB = toppingB[::-1]
16 for i in range(length-1):
17 if toppingA[i] == toppingB[i]:
18 answer+=1
19 return answer
문제
- 롤케이크 위에 올려진 토핑번호의 정수 배열 topping이 주어진다
- 롤케이크를 잘랐을 때, 두 조각의 토핑 종류를 똑같이 만드는 방법의 수를 구하라
- TC
- input
[1, 2, 1, 3, 1, 4, 1, 2]
- ouput
2
- input
해결방법
- toppingA에는 왼쪽에서부터 토핑 종류의 누적합을,
- toppingB에는 오른쪽에서부터 토핑 종류의 누적합을 저장한다
- toppingB를 역순으로 만든다
- toppingA,B를 순회하면서 두 리스트의 값을때 양쪽의 토핑 종류 개수가 같으므로, answer를 1 증가시킨다