https://school.programmers.co.kr/learn/courses/30/lessons/120923?language=python3
풀이 - 나의 생각
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
'프로그래머스 > Lv.0' 카테고리의 다른 글
7의 개수 - Python(int를 String으로 변환, count) (0) | 2024.11.01 |
---|---|
2차원으로 만들기 - Python, 리스트 컴프리헨션, 2차원 (0) | 2024.10.30 |
프로그래머스 > 옹알이(1) - Python, re.sub() (2) | 2024.10.26 |
프로그래머스 > 동적계획법(Dynamic Programming) > 정수 - JAVA (0) | 2023.06.01 |
코딩테스트 연습 > 연속된 수의 합 - JAVA (0) | 2023.01.17 |