[백준/Python] 1024번- 수열의 합

Sujin Lee·2022년 7월 13일
0

코딩테스트

목록 보기
87/172
post-thumbnail

문제

1024번- 수열의 합

해결 과정

  • ((2*n) - (l*(l-1))) % (2*l)이 0으로 나누어떨어질 때
    • 첫번째 항은 ((2*n) - (l*(l-1))) // (2*l)이 된다.
    • 첫번째 항이 0보다 작다면 print(-1)
    • 0보다 크거나 같다면 첫번째 항부터 l개 만큼 출력
  • 0으로 나누어떨어지지 않는다면, l을 1씩 더해줘서 리스트의 길이를 늘려나간다.
  • l이 100보다 크다면 print(-1)

시행착오

  • 너무나도 수학 문제
  • 등차수열의 합 공식을 이용

풀이

import sys

n, l = map(int,sys.stdin.readline().split())


while True:
  if ((2*n) - (l*(l-1))) % (2*l) == 0:
    answer = ((2*n) - (l*(l-1))) // (2*l)
    if answer < 0:
      print(-1)
      break
    else:
      print(*list(range(answer,answer+l)))
      break
  else:
    l += 1
  if l > 100:
    print(-1)
    break
profile
공부한 내용을 기록하는 공간입니다. 📝

0개의 댓글