PS알못 OrbitHv의 PS logo PS알못 OrbitHv의 PS

태그:

3. for문

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