Baekjoon 문제 풀기 (8393번 : 합)Python
8393번 : 합
1. 문제읽기
2. 제출 코드
while문
을 써서 a가 0이 될때까지 반복시켜주고, a에서 1씩 빼주면서 반복문을 돌렸다.
a가 0이 되면 while문
을 빠져나오면서 종료!
a = int(input())
total = 0
while a != 0:
total += a
a -= 1
print(total)
3. 공부할 것
다른 사람들의 코드를 보니 그냥 1부터 n까지 합을 구하는 공식을 써서 풀었더라..
검색해보니 파이썬으로 1부터 n까지의 합을 구하는 문제가 알고리즘의 기초중에 기초라고 한다.
예를 들어 1부터 10까지의 합 S
을 구한다고 했을 때, 아래와 같이 구할 수 있을 것이다.
S = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
S = 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1
-----------------------------------------------------
2S = 11 + 11 + 11 + 11 + 11 + 11 + 11 + 11 + 11 + 11
= 11 * 10
S = (11 * 10)/2
제일 앞의 숫자 1
과 제일 뒤의 숫자 10
를 더한 것이 총 10
번 반복되는 값이 2S이 된다.
1부터 n까지의 합을 구하는 공식
n * (n+1) / 2
a부터 b까지 n개의 합을 구하는 공식
n * (a+b) / 2
생각해보면 비효율적으로 1씩 더하는 것보다 생각을 더 해서 이렇게 공식을 만드는 게 알고리즘의 원리(?)라고 볼 수 있는 것 같다.
더 알고리즘 적으로 생각하고 풀어야겠다..
댓글남기기