일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바
- boj
- 손경제 요약
- 손경제
- 손에 잡히는 경제 요약
- Programmers
- Python
- 테마주
- 코딩테스트
- 알고리즘
- 프로그래머스
- 경제뉴스
- 코테
- 주식 상한가
- 급등주 분석
- 파이썬
- 경제뉴스 요약
- 주식
- 백준
- 손에 잡히는 경제
- 경제
- 상한가 이유
- 상한가 분석
- 주식 분석
- 급등 이유
- 이진우의 손에 잡히는 경제
- 급등주
- 이진우
- 상한가
- java
- Today
- Total
Completion over Perfection
프로그래머스 - 연속된 수의 합 (파이썬3 Python3) 본문
https://school.programmers.co.kr/learn/courses/30/lessons/120923
수학적으로 접근을 해서 풀었습니다.
예시를 몇개 보다보면 규칙성이 발견이 되는데,
예를들어 첫번째 예시를 보면 num = 3 이고 total은 12로 3개의 연속된 숫자를 합하면 12가 되는 수열을 구해야합니다.
답은 3+4+5 = 12로 3,4,5를 배열에 넣어서 리턴을 해주면 되는데
그럼 도대체 저 3,4,5라는 숫자를 어떻게 뽑아내야하는 것인가? 가 문제가 됩니다.
수학적으로 접근해서 공식화를 해보면
num=3일경우 3개의 연속된 숫자를 합해야하므로
첫번째 숫자를 X라고 했을 때,
X + (X+1) + (X+2)
이렇게 합한것이 12가 되어야 합니다.
따라서 식을 좀 더 덧붙여보면
X + X + 1 + X + 2 = 12
→ 3X + 3 = 12
이 식을 만족하는 X를 구해내면 우리는 답을 구할수가 있게 됩니다.
X는 3이 되어야 되겠죠?
그럼 문제에서 요구하는 [3,4,5]의 배열은
X값으로 구한 3을 초기값으로 설정하고 3번 for문을 돌려서 1씩 증가한 값들을 합한 수를 배열에 넣어주면 되겠죠.
두번째 예시도 한번 해보면,
num=5, total=15 이렇게 주어진 상태에서
X + (X+1) + (X+2) + (X+3) + (X+4) = 15
→ 5X + 10 = 15
이 식에서 X를 구해야되고, X는 1이 되게 됩니다.
그럼 답은 1부터시작해서 5로 끝나는 5개의 원소를 가진 배열이 되겠죠 ([1,2,3,4,5])
풀다보니까 num 숫자에 따라 저 방정식을 공식화 할 수 있을 것 같습니다.
첫번째 예시와 두번째 예시를 잘 살펴보면,
num이 3일 경우 방정식은 아래와 같이 됩니다.
num * X + (0 + 1 + 2) = 12
→ 3X + 3 = 12
공식화한 방정식이 처음 예시를 들었던 방정식과 같아졌습니다.
두번째 예시도 공식화된 방정식처럼 되는지 한번 볼까요?
num이 5이고 total이 15이므로,
num * X + (0+1+2+3+4) = 15
→ 5X + 10 = 15
두번째 예시도 마찬가지네요.
이로써 우리는 X앞에 num을 곱해주고 뒤에는 0부터 시작해서 num만큼 1씩 증가한 수열을 합한 값이 total과 같아져야 한다는 것을 알 수 있습니다.
나머지는 코드를 보고 한번 이해해보시면 될 것 같네요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
def sum(num):
cnt = 0
result = 0
while cnt < num:
result += cnt
cnt+=1
return result
def solution(num, total):
answer = []
# num*x+sum(num) = total
x = (total - sum(num))/num
x = int(x)
for i in range(num):
answer.append(x+i)
return answer
|
cs |
'파이썬 (Python)' 카테고리의 다른 글
프로그래머스 - 짝수와 홀수 (파이썬3 Python3) (0) | 2023.08.27 |
---|---|
프로그래머스 - 신고 결과 받기 (파이썬3 Python3) (0) | 2023.08.26 |
프로그래머스 - 안전지대 (파이썬3 Python3) (0) | 2023.08.21 |
프로그래머스 - 무인도 여행 (파이썬3 Python3) (0) | 2023.08.20 |
프로그래머스 - 최고의 집합 (파이썬3 Python3) (0) | 2023.08.19 |