https://www.acmicpc.net/problem/1789
1789번: 수들의 합
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
www.acmicpc.net
1. 내가 작성한 코드
n = int(input()) #자연수의 합
sum = 0
for i in range(1,n+1):
sum += i
if sum == n:
print(i)
break
elif sum > n:
print(i-1)
break
range의 범위를 1부터 n까지로 잡고 풀었더니 97%에서 계속 오류가 났다😥
왜 그럴까 고민을 해보니 n이 '1 or 2'일경우 출력이 되는 조건이 없던 것,,
수정해서 맞긴 했는데, 우리가 아는 공식을 이용하는 아주 수ㅣ운 풀이가 있었다.
2. 다른 풀이
s = int(input())
n = 1
while n* (n+1) / 2 <= s:
n+=1
print(n-1)
등차수열의 합 공식을 이용한 n* (n+1) / 2 을 이용하면 된다!
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 5622번 다이얼(with python) (0) | 2023.01.21 |
---|---|
[백준] 1978번 소수 찾기(with python) (0) | 2023.01.21 |
[백준] 2908번 상수(with python) (0) | 2023.01.20 |
[백준] 1152번 단어의 개수(with python) (0) | 2023.01.20 |
[백준] 1157번 단어 공부(with python) (0) | 2023.01.20 |
댓글