https://school.programmers.co.kr/learn/courses/30/lessons/131701
# 원형 큐에서 움직인 후의 인덱스를 계산한 풀이
def solution(elements):
answer = set([sum(elements[:])])
length = len(elements)
for i in range(1, length):
for j in range(length):
if j+i <= length:
answer.add(sum(elements[j:j+i]))
else:
idx = (j + i) % length
answer.add(sum(elements[j:]) + sum(elements[:idx]))
return len(answer)
# 원형 큐로 사용되는 리스트를 *2하여 선형적으로 접근하여 푸는 풀이(다른 사람 풀이 참조)
def solution(elements):
partial = list()
temp_el = elements*2
for i in range(1,len(elements)+1):
for j in range(len(elements)):
partial.append(sum(temp_el[j:j+i]))
answer = len(set(partial))
return answer
def solution(elements):
length = len(elements)
tot = sum(elements)
s = set([tot])
for cur_length in range(1, length):
# 길이가 cur_length 인 수열
init_hap = 0
init_end = (cur_length - 1) % length
# 0번째 인덱스에서 슬라이딩 윈도우 기본값을 세팅
for i in range(init_end+1):
init_hap += elements[i]
print(f'시작={0}, 마지막={init_end}, 합={init_hap}')
s.add(init_hap)
# 1번째 인덱스에서 시작
for start in range(1, length):
end = (start + cur_length - 1) % length
init_hap -= elements[start-1]
init_hap += elements[end]
print(f'시작={start}, 마지막={end}, 합={init_hap}')
s.add(init_hap)
print()
return len(s)