# 원래 dic의 값이 0 이 아닐때도 조건문을 통해 제어를 했는데 굳이 인가 싶어서 뺌
# 아래 코드보다 시간 효율이 더 좋음
def solution(elements):
dic, ln = {i:0 for i in range(sum(elements)+1)}, len(elements)
for i in range(ln):
hap = elements[i]
dic[hap] = hap
for j in range(i+1, i+ln):
hap += elements[j%ln]
dic[hap] = hap
return len([ i for i in list(dic.values()) if i != 0])
# 연결 리스트로 푼게 아닌 기존 배열을 두배로 늘려서 하다보니 엄청 시간이 길어짐
# 풀어지긴 함
def solution(elements):
dic, ln = {i:0 for i in range(sum(elements)+1)}, len(elements)
elements_double = elements*2
for i in range(1, ln+1):
for j in range(ln):
if not dic[sum(elements_double[j:j+i])]: dic[sum(elements_double[j:j+i])] = sum(elements_double[j:j+i])
return len([ i for i in list(dic.values()) if i != 0])
'알고리즘' 카테고리의 다른 글
[프로그래머스] 행렬의 곱셈 (0) | 2023.06.22 |
---|---|
[프로그래머스] n^2 배열 자르기 (0) | 2023.06.21 |
[프로그래머스] H-Index (0) | 2023.06.19 |
[프로그래머스] 괄호 회전하기 (0) | 2023.06.15 |
[프로그래머스] 귤 고르기 (0) | 2023.06.13 |