방명록
- LEVEL 2. 연속 부분 수열 합의 개수2025년 01월 11일에 업로드 된 글입니다.
🟪 나의 구현 스케치
연속된 부분 수열의 합만 구해야 하므로 combinations 함수를 사용하지 않고, 원형 수열이기 때문에 합을 구하는 수열은 elements*2로 정의한다.
0~len(elements)-1 각 시작점에서 1~len(elemets)+1까지의 조합의 개수만큼 부분수열의 합을 구하도록 하였고 set 함수를 사용하여 중복된 값을 제외할 수 있도록 한다.
🟪 나의 구현 코드
def solution(elements): len_ele = len(elements) new_ele = elements*2 answer = set() for idx in range(1, len_ele+1): for i in range(0, len_ele): answer.add(sum(new_ele[i:i+idx])) return len(answer)
🟪 다른 사람의 구현 코드
element 길이 안 늘리고 mod를 사용하여 더 빠르게 동작한다고 한다. mod 사용법에 대해 익숙해지면 좋을 것 같다.
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)
'코딩테스트 > 🕊️프로그래머스' 카테고리의 다른 글
LEVEL 2. 예상 대진표 (0) 2025.01.13 LEVEL 1. 신규 아이디 추천 (0) 2022.09.30 LEVEL 1. 완주하지 못한 선수 (2) 2022.09.30 LEVEL 1. 최소직사각형 (0) 2022.09.28 LEVEL 1. [1차] 비밀지도 (0) 2022.09.28 다음글이 없습니다.이전글이 없습니다.댓글