문제풀이
우리가 구하고자 하는 answer의 첫째항을 a로 가정한 후,
a를 구하면 num만큼 반복시켜 answer를 구성할 예정입니다.
total = a + (a+1) + (a+2) + ... + (a+n-1)
total = (a+n-1) + (a+n-2) + (a+n-3) + ... +a
좌변, 우변끼리 더하면
2total = (2a+n-1) + (2a+n-1) + (2a+n-1) + ... (2a+n-1) 입니다.
여기서 우변의 반복되는 항은 n개가 있으므로 다시 정리하면
2total = (2a+n-1)n이 됩니다.
num개 =n개이므로
이제 a를 구해보자면...
a = (2*total/num + 1 - num) / 2
a는 starting point입니다.
이제 a를 구했으니
for문을 0부터 ~(num-1)까지 a+i를 돌립니다.
계산된 a +i의 값을 answer리스트에 추가시킵니다.
answer에 (a+i)를 넣습니다.
예를 들어 total = 15, num=5 이고 a=1인 경우
answer = [1, 2, 3, 4, 5]
a+i가 0부터 4까지 0부터 num-1까지 진행됨을 알수 있습니다.
def solution(num, total):
answer=[]
a =(2*total/num-num+1)/2;
for i in range(0, num):
answer.append(int(a)+i)
return answer
'프로그래머스(파이썬) > LV.0(파이썬)' 카테고리의 다른 글
문자 반복 출력 - 빈 문자열 이용 (0) | 2022.11.14 |
---|---|
배열 뒤집기 (0) | 2022.11.14 |
겹치는 선분의 길이 - 프로그래머스 (0) | 2022.11.13 |
최빈값 - 튜플을 요소로하는 리스트 접근 (0) | 2022.11.13 |
평행 (0) | 2022.11.12 |