프로그래머스/Lv.0
연속된 수의 합 -Python
아찌방
2024. 10. 29. 00:24
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