본문 바로가기

프로그래머스 퀴즈(Python)/level 2

23.02.10 파이썬 코딩 퀴즈#149 연속 부분 수열 합의 개수 (프로그래머스 스쿨)

이번 문제는 연속 부분 수열 합의 개수 이다.

전달받은 배열은 원형 수열로, 처음과 끝이 연결되어 있다.

따라서 위 원형 수열로 연속 부분 수열의 값을 구하면 위와 같고, 중복된 값을 제외하면 총 18개의 값을 얻을 수 있다.

위 설명에서 힌트를 얻을 수 있는건, 수열의 길이가 10 이라면 길이가 1 인 부분 수열부터 10인 부분 수열까지의 합의 가지수를 구해야 한다는 것이다.

코드는 생각보다 단순하다.

먼저 전달받은 elements 를 2배로 늘린 temp 를 하나 준비한다.

그리고 이중 반복문으로 temp 의 해당 구간의 합을 answer에 넣어준다.

그 뒤 set()을 이용해 중복값을 제거한 answer의 길이를 반환해 주면 된다.