반응형
[ Contents ]
1. 문제 (링크 참조)
2. 문제 풀이
합이 N이면서, 길이가 L이상인 가장 짧은 연속된 자연수 리스트를 구해야 합니다.
반응형
3. 코드
# 입력
N, L = map(int, input().split())
# 탐색
for i in range(1, 500000001):
res = 0
for j in range(i, i+100):
res += j
if res == N and j-i > L:
for k in range(i, j+1):
print(k, end=" ")
exit()
else:
print(-1)
브루트포스 식으로 들어가면... 당연히 답도 안 나올 뿐더러 시간 초과입니다.
(x+1) + (x+2) + (x+3) + ... + (x+n) = nx + (1+2+3+...+n)
= nx + n(n+1)/2
= N
연속된 자연수의 합이므로, N이 x+1부터 x+n까지의 합인 수열을 구하면 됩니다.
nx + n(n+1)/2 = N
nx = N - n(n+1)/2
x = N/n - (n+1)/2
자연수의 합이므로 x는 정수이며, x+1은 0이상이어야 합니다.
# 입력
N, L = map(int, input().split())
# 탐색
for n in range(L, 101):
x = N/n - (n+1)/2
if int(x) == x:
x = int(x)
if x + 1 >= 0:
for i in range(x+1, x+n+1):
print(i, end=" ")
break
else:
print(-1)
반응형
'Algorithm' 카테고리의 다른 글
[자료구조/집합] 백준 11478 서로 다른 부분 문자열의 개수 - 파이썬(Python) (0) | 2023.08.10 |
---|---|
[자료구조/스택] 백준 28278 스택 2 - 파이썬(Python) (0) | 2023.08.10 |
[구현/수학] 백준 28431 양말 짝 맞추기 - 파이썬(Python) (0) | 2023.08.07 |
[브루트포스/비둘기집 원리] 백준 20529 가장 가까운 세 사람의 심리적 거리 - 파이썬(Python) (0) | 2023.08.04 |
[탐색/BFS] 백준 21736 헌내기는 친구가 필요해 - 파이썬(Python) (0) | 2023.08.04 |
댓글