반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131701
🐍파이썬
def solution(elements):
arr = [i for i in elements] #길이1
arr.append(sum(elements)) #길이n
for i in range(2, len(elements)): #길이 2 ~ n-1개의 부분수열
for j in range(len(elements)):
hap = 0
if i + j > len(elements): #배열의 인덱스를 벗어날 경우
hap += sum(elements[j:len(elements)])
hap += sum(elements[0:(i + j)%len(elements)])
else:
hap += sum(elements[j:i+j])
arr.append(hap) #구한 합을 arr에 추가
return len(set(arr)) #중복제거 후 출력
다른 풀이 방법
def solution(elements):
ll = len(elements)
res = set()
for i in range(ll):
ssum = elements[i]
res.add(ssum)
for j in range(i+1, i+ll):
ssum += elements[j%ll]
res.add(ssum)
return len(res)
코드만 봤을 때는 이해하기 힘들어 각 반복문마다 변수의 값을 출력해 보았다.
def solution(elements):
ll = len(elements)
res = set()
for i in range(ll):
ssum = elements[i] #원소 1개
res.add(ssum)
print(ssum)
for j in range(i+1, i+ll):
print(i, j, j%ll)
ssum += elements[j%ll]
print(ssum)
res.add(ssum)
return len(res)
출력결과는 아래와 같다.
7 # i == 0, 원소 1개의 합
0 1 1 #i, j, i%ll
16 # i == 0부터 원소 2개의 합
0 2 2
17 # i == 0부터 원소 3개의 합
0 3 3
18 # i == 0부터 원소 4개의 합
0 4 4
22 # i == 0부터 원소 5개의 합
9 # i == 1, 원소 1개의 합
1 2 2
10 # i == 1부터 원소 2개의 합
1 3 3
11 # i == 1부터 원소 3개의 합
1 4 4
15 # i == 1부터 원소 4개의 합
1 5 0
22 # i == 1부터 원소 5개의 합
1 # i == 2, 원소 1개의 합
2 3 3
2
2 4 4
6
2 5 0
13
2 6 1
22
1 # i == 3, 원소 1개의 합
3 4 4
5
3 5 0
12
3 6 1
21
3 7 2
22
4 # i == 4, 원소 1개의 합
4 5 0
11
4 6 1
20
4 7 2
21
4 8 3
22
elements의 각 원소마다 연속되는 1개, 2개, 3개, 4개,...의 값을 구하여 set()에 add한 풀이이다.
🐥자바스크립트
function solution(elements) {
var answer = 0;
let eSet = new Set();
for(let i = 0; i < elements.length; i++){
answer = elements[i];
eSet.add(answer);
for(let j = i+1; j < i+elements.length; j++){
answer += elements[j%elements.length];
eSet.add(answer)
}
}
return eSet.size;
}
위 파이썬 <다른 풀이 방법> 풀이를 자바스크립트 풀이로 구현하였다.
반응형
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | 파이썬 / 자바스크립트] 주차 요금 계산(2022 KAKAO BLIND RECRUITMENT/ level 2) (0) | 2023.03.03 |
---|---|
[프로그래머스 | 파이썬 / 자바스크립트] 대충 만든 자판(연습문제/ level 1) (0) | 2023.02.28 |
[프로그래머스 | 파이썬 / 자바스크립트] [1차] 뉴스 클러스터링(2018 KAKAO BLIND RECRUITMENT/ level 2) (0) | 2023.02.28 |
[프로그래머스 | 파이썬 / 자바스크립트] 이진수 더하기(코딩테스트 입문/ level 0) (0) | 2023.02.28 |
[프로그래머스 | 파이썬 / 자바스크립트] 유한소수 판별하기(코딩테스트 입문/ level 0) (0) | 2023.02.25 |
[프로그래머스 | 파이썬 / 자바스크립트] 대문자와 소문자(코딩테스트 입문/ level 0) (0) | 2023.02.25 |