1. 문제
- n이 주어졌을 때, 1부터 n까지의 합을 구해라.
2. 풀이
- 1) for문으로 누적합이 되도록 풀었다.
- 2) n까지의 합은 1 + n을 n번 곱한 것의 절반이라고 생각할 수 있다.
N = int(input())
sum = 0
for num in range(N):
x = num + 1
sum += x
print(sum)
1)
정수 N을 받고,
누적할 변수 sum에 0으로 선언한다.
1부터 N을 더할 것이기 때문에 N번 반복한다.
처음 num에는 0이 들어가고 0 + 1 이 x에 담긴다.
sum += x는 sum = sum + x라는 의미이므로,
sum에는 0 + 1 이 담긴다.
그 다음 num은 1이 되고 1+1이 x에 담긴다.
sum에는 1 + 2 가 담긴다.
이런 식으로 N번 반복된다.
N = int(input())
print(N*(N+1)//2)
2)
만약 N에 5를 입력 받게 된다면,
5 * (5+1) // 2가 될 것이다.
1부터 5까지의 합은 1 + 2 + 3 + 4 + 5인데
1+ 5 = 2 + 4이므로
(1 + 5) * 2라고 표현할 수 있다.
여기에 + 3을 해주면 1부터 5까지의 합을 알 수 있다.
하지만,
N*(N+1)//2라는 식을 통해 알 수 있듯
5 * (5+1) // 2를 하게 되어도 1부터 5까지의 합을 알 수 있다.
3. 남의 버전 분석
- (숏코딩) -~ 이런 걸 사용했다.
# 숏코딩
n = int(input())
print(n*-~n//2)
-~가 신기했는데,
a = 3
print(f'~a: {~a}')
print(f'-~a: {-~a}')
위의 코드를 실행하면,
~a는 -4, -~a는 4가 출력된다.
~는 not 연산자이고, c언어에서 보수 표현하던 방법이라고 하더라.
1의 보수, 2의 보수에 대해 알아야 한다고 한다.
지금은 모르니까 패스.
아무튼 이 보수 표현으로 1부터 n까지의 합을 나타낼 수 있다.
4. 출력 확인
- -~ 연산 출력 결과
'백준' 카테고리의 다른 글
백준 2741 N찍기 파이썬 (0) | 2022.10.27 |
---|---|
백준 15552 빠른 A + B 파이썬 (0) | 2022.02.17 |
백준 10950 a + b (3번째) 파이썬 (0) | 2022.02.15 |
백준 2739 구구단 파이썬 (0) | 2022.02.14 |
백준 2884 알람 시계 파이썬 (0) | 2022.02.13 |