문제
https://www.acmicpc.net/problem/8393
코드
cnt = int(input())
print(sum(i for i in range(1,cnt+1)))
풀이
간단하게 풀이가 가능해 보여서 직관적으로 풀었다. 이럴경우 시간 복잡도는 O(n).
✔ 하지만 수학적으로 접근하면 1~n 까지의 합은 n(n+1)/2 즉, (n^2 + n)/2 로 한번의 계산으로 도출 가능하며, 이때 시간 복잡도는 O(1)로 대폭 감소한다.
✔ 문제를 풀이할 때 여러 방향으로 생각해보자.
다른 풀이
출처: https://www.acmicpc.net/source/13249601
n = int(input())
print((n**2+n)//2)
'Algorithm > Beakjoon' 카테고리의 다른 글
[Python] 백준 10992번_별 찍기-17 (0) | 2022.08.08 |
---|---|
[Python] 백준 2446번_별 찍기 - 9 (0) | 2022.08.05 |
[Python] 백준 1924번_2007년 (0) | 2022.08.02 |
[Python] 백준 11720번_숫자의 합 (0) | 2022.08.01 |
[Python] 백준 11719번_그대로 출력하기 2 (0) | 2022.08.01 |