코딩테스트/프로그래머스[모든문제Lv.0]

연속된 수의 합

두퍼 2023. 3. 30. 17:36

1. Clarifying Questions/idea

  • 음수도 포함이 되는가? 예시 보니 그러하다
  • 연속된 수들이니까 1씩 차이가 남
  • 홀수개 : 1,2,3,4,5 >> 합은 사실 (가운데수) *((num / 2 )*2 + 1)
  • 짝수개: 2,3,4,5 >> (처음과 끝수 더한 합) * (num/2)

2. Get to the most Optimized solution

  1. num이 홀수인지 짝수인지 구분
  2. 홀수 일때 구현 - mid 변수를 구해서 -1 씩 빼주는
  3. 짝수 일때 구현 - (처음과 끝수의 합)을 구하고 차이만큼 빼서 첫번째 수 찾기

3. Code

def solution(num, total):
    answer = []
    
    if (num % 2 == 0):
        firstLast = total / num * 2
        firstNum = (firstLast - (num-1))/2
        for i in range(num):
            answer.append(firstNum)
            firstNum += 1
    else:
        mid = total / (int(num / 2) * 2 + 1)
        firstNum = mid - int(num / 2)
        for i in range(num):
            answer.append(firstNum)
            firstNum += 1
            
            
    return answer

'코딩테스트 > 프로그래머스[모든문제Lv.0]' 카테고리의 다른 글

잘라서 배열로 저장하기  (0) 2023.03.31
문자열 밀기 ☑️  (0) 2023.03.31
종이 자르기  (0) 2023.03.31
다음에 올 숫자  (0) 2023.03.30
옹알이(1)  (0) 2023.03.30