태그:
1부터 자연수 N까지의 모든 정수의 합을 출력하는 문제입니다. 합을 저장할 변수를 만들고 루프 변수를 1부터 N까지 바꿔가며 매 루프마다 앞서 만든 변수에 루프 변수를 더해서 답을 구할 수 있습니다.
solved.ac에 따르면 반복문이 필요한 경우 Bronze III의 난이도를 가진다고 했으나, 이 문제는 Bronze V입니다. 그 이유는 곱셈과 나눗셈 각 한 번씩만 사용하여 답을 구할 수 있기 때문입니다. 1부터 n까지의 합을 구하는 공식이 존재합니다.
\[\frac{n(n+1)}{2}\]
증명
$$
\text{Let }S=1+2+...+n\\
S=n+(n-1)+...+1\\
S+S\begin{aligned}[t]
&=(1+2+...+n)+(n+(n-1)+...+1)\\
&=((1+n)+(2+(n-1))+...+(n+1))\\
&=(n+1)\times n
\end{aligned}\\
S\begin{aligned}[t]
&=\frac{1}{2}\times(n+1)\times n\\
&=\frac{n(n+1)}{2}
\end{aligned}
$$
이를 이용하면 단 두 번의 연산만으로 답을 구할 수 있습니다.
소스 코드
언어 | 코드 | 시간 |
---|---|---|
Python 3 | 코드(Github) / 코드(백준) | 2020-03-24 15:18:56 |