bong-u/til

프로그래머스 - 연속 수열 합의 개수 (L2)

수정일 : 2023-08-06

  • 첫번째 풀이
     1def solution(elements):
     2    result = set()
     3    length = len(elements)
     4    elements = elements*2
     5    for i in range(length):
     6        temp = 0
     7        for j in range(length):
     8            temp += elements[i+j]
     9            result.add(temp)
    10
    11    return len(result)
    
  • 개선한 풀이
     1def solution(elements):
     2result = set()
     3length = len(elements)
     4for i in range(length):
     5    temp = 0
     6    for j in range(length):
     7        temp += elements[(i+j)%length]
     8        result.add(temp)
     9
    10return len(result)
    

문제

  • 주어진 정수 배열로 원형 수열을 만든다
  • 원형 수열의 연속된 부분 수열의 합의 개수를 구하여라
  • TC
    • input

      [7,9,1,1,4]

    • ouput

      18

해결방법

  • 첫번째 풀이에서는 배열을 2배로 늘려서 원형 수열을 만들었다
  • 개선한 풀이에서는 mod 연산을 이용해서 원형 수열을 만들었다
  • set를 이용해서 중복을 제거하고 원소 개수를 반환하였다