[백준] 1024.수열의 합

jeongjeong2·2023년 8월 3일
0

For coding test

목록 보기
53/59

문제 바로가기

문제 풀이

L개 이상의 연속된 수의 합으로 N을 나타내는 문제, L의 제한이 100이었으므로 하나하나 체크하는 것이 옳은 방법이라고 생각해서 while문으로 L이 100이 되는 순간까지 식을 반복했다. 식을 세우는 과정에서 약간 버벅임이 있었다.

정답 코드

"""
https://www.acmicpc.net/problem/1024
"""
N, L = map(int,input().split())
while L<=100:
    sum = 0
    for i in range(L+1):
        sum += i
    K = L*((N-sum)//L) + sum
    if K == N and N-sum>=-L:
        ans = []
        for i in range(L):
            ans.append((N-sum)//L+i+1)
        print(*ans)
        break
    L += 1
if L>100:
    print(-1)

추가적인 개념 (optional)

풀이가 너무 난잡한 것 같다. N-sum < L이라는 특정 상황에서만 쓰이는 코드를 좀 더 일반적으로 표현할 수는 없을까? -> 다른 사람 코드 참고했을 때 다들 비슷하게 수학적인 표현을 가지고 풀이를 진행하는 것 같다.

1개의 댓글

comment-user-thumbnail
2023년 8월 3일

잘 봤습니다. 좋은 글 감사합니다.

답글 달기