난이도 : 실버 5
백준 문제
2018
코드 알고리즘
import sys
input = sys.stdin.readline
N = int(input())
def find_contin(N):
start_id = 1
end_id = 2
sum = 0
result = 0
while start_id < end_id:
if end_id > N:
break
sum = (end_id)*(end_id+1)//2 - (start_id-1)*start_id//2
if sum == N:
result += 1
end_id += 1
elif sum < N:
end_id += 1
else:
start_id +=1
return result
if N==1:
print(1)
else:
print(find_contin(N)+1)
리스트가 필요하지 않지만 리스트를 만들어 메모리 초과 발생. index라고 리스트가 반드시 필요하다는 편견 버리기
최대 N의 중간, N//2+1까지만 시행하고 마지막에 +1을 하면 시행횟수를 줄일 수 있다. (최대 중간까지의 연속 합이 N이 될 수 있으므로)
근데 틀렸다고 떠서 N까지 수행했다. 마지막 +1이 문제가 아니라 중간 범위 처리하는 과정에서 문제가 발생했을 것으로 보인다.
한번 나중에 보완해 보겠다.
투포인터가 아닌 시그마 공식을 적용해서 풀 수도 있을 것으로 보인다. 시간도 비슷하게 나올 것 같아 sol2로 시도해봐야겠다.
자만하지 말고 조급해하지 말자. 내 실력을 정확히 평가하자,,, 실버 5임에도 난 너무 못 풀었다... 다시 기초부터 차근차근 쌓고 인내심을 기르자
난 너무 인내심이 없다ㅠㅠ