본문 바로가기
프로그래머스/Lv.0

연속된 수의 합 -Python

by 아찌방 2024. 10. 29.

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/120923?language=python3

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

풀이 - 나의 생각

num == 3, total == 12일 때

 

1, 2, 3 의 합은 6

 

그러면 total 보다 작으니까

 

2, 3, 4를 합해보자

 

그러면 9인데

 

그래도 작으니까

 

3, 4, 5 를 합해보면 12가 나온다.

 

근데 이걸 보면

 

숫자가 커지는게 num과 같다

 

6 -> 9 -> 12

 

다른 것도 해보면 이와 같은 걸 알 수 있다.

 

이를 이용해보자

 

시작하는 숫자는 0, 1 이든 뭐든 상관 없다

 

1일 경우

 

1부터 +num 까지의 합(result)을 구한다.

 

이 값을 구하고 싶은 수의 합. 즉, total에 뺀다

 

12 - 6 = 6

 

그러면 내가 숫자가 한개씩 커질때마다 3이 커졌는데

 

몇번을 움직여야 하는지 보인다.

 

왜냐, 6은 내가 두번 오른쪽으로 이동하면 커지는 수와 같지 않은가?

 

그러니까 total - result = diff 값에

 

num을 나누면

 

diff / num = 시작 지점에서 몇 번 움직여야 하는지

 

가 나오는 것이다.

 

거기부터 + num까지의 숫자를 기록하면 정답이 나온다.

 

 

 

 

 

코드

 

def solution(num, total):
    answer = []
    
    result = sum(range(num+1))
    start = (int)(((total - result) / num) + 1)
    answer = list(range(start, start+num))
    
    return answer

 

 

 

 

 

 

 

다음에 또 봐요

 

728x90