728x90
반응형
1. 문제 설명
2. 풀이과정
- 부분 수열의 합을 저장할 리스트를 생성한다. li = list()
- 각 부분 수열의 경우는 길이가 1부터 부분 수열 원소 크기까지 반복한다. for k in range(len(elements))
- 각 부분 수열의 시작을 나타내는 변수를 생성하고 초기화한다. i = 0
- 각 부분 수열의 끝을 나타내는 변수를 생성하고 각 경우별 길이만큼 떨어진 값을 저장한다. j = k + 1
- 각 길이별 경우는 모두 부분 수열 원소 크기만큼 그 합의 경우가 나오기 때문에 부분 수열 원소 크기만큼 연산을 반복한다. for _ in range(len(elements))
- 만약 부분 수열의 끝을 나타내는 값이 부분 수열의 원소 크기보다 같거나 크면 앞에서부터 부분 수열을 이어 해당 값을 더해줘야 한다. if (j >= len(elements))
- 따라서 시작부터 끝까지 합을 더하고 인덱스 0부터 끝에서 부분 수열 원소 크기를 뺀 인덱스까지 더하여 해당 값을 리스트에 추가한다. li.append(sum(elements[i : ]) + sum(elements[ : j - len(elements)]))
- 반면에 시작과 끝이 모두 부분 수열 원소의 크기 안에 있으면 else
- 그냥 시작부터 끝까지 원소를 더하여 그 값을 리스트에 추가한다. li.append(sum(elements[i : j]))
- 다음 부분 수열로 이동하여 연산을 계속하기 위해 각 시작 위치와 끝 위치를 1칸씩 이동한다. i += 1 j += 1
- 모든 경우의 합을 저장한 리스트에서 중복된 값을 제거하고 그 리스트의 길이를 저장한다. answer = len(set(li))
반응형
3. 소스코드
def solution(elements):
answer = 0
li = list()
for k in range(len(elements)):
i = 0
j = k + 1
for _ in range(len(elements)):
if (j >= len(elements)):
li.append(sum(elements[i : ]) + sum(elements[ : j - len(elements)]))
else:
li.append(sum(elements[i : j]))
i += 1
j += 1
answer = len(set(li))
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 폰켓몬 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.18 |
---|---|
[프로그래머스] 명예의 전당(1) - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.18 |
[프로그래머스] n^2 배열 자르기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.16 |
[프로그래머스] H-Index - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.16 |
[프로그래머스] 2016년 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.16 |
[프로그래머스] 괄호 회전하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.14 |
[프로그래머스] 귤 고르기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.14 |
[프로그래머스] 추억 점수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.14 |