최대 1 분 소요

사용 언어: Python3

문제

수들의 합

풀이

나의 풀이

S = int(input())

# 1부터 N까지 합의 합이 S가 되는 N (근의 공식 이용)
N = int(((1 + 8 * S)**0.5 - 1) // 2)
print(N)
  • 테스트 케이스: 통과
  • 제출 결과: 통과
    스크린샷 2023-06-22 오후 1 54 48
  • 서로 다른 N개의 자연수의 합이 S인데, N의 “최댓값”을 구하는 문제니까 = “1부터 N까지의 합이 S이다” 라고 생각했다.
  • 학생 때 배운 공식을 떠올려보면 1부터 N까지의 합은 N * (N+1) // 2 이다.
  • 따라서 N * (N+1) // 2 = S를 만족하는 N를 찾아야 하고, 근의 공식을 이용하면 N = ((1 + 8 * S)**0.5 - 1) // 2이 나온다.
  • 위 식에 int()를 씌워 자연수로 변환해주면 된다,

스크린샷 2023-06-22 오후 2 01 07



💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기