두퍼 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