본문 바로가기

Language/Python

(파이썬) 백준 1789 : 수들의 합 - 컴도리돌이

728x90
728x90

이번 문제는 생각보다 까다로운 문제였다.

일단 문제를 문제를 풀기 전에 문제를 이해하는 데에 오래 걸렸다.

 

일단 문제를 이해해보면 첫째 줄에서는 예제 입력을 200으로 했다.

그러면 주어진 범위(1≤S≤4,294,967,295)에서 N개의 자연수의 합으로 S를 만들어야 한다.

그러면 경우의 수가

1 + 199

1 + 2 + 197

...

문제의 풀이는 가장 많은 수를 사용해야 하기 때문에 for문을 사용하여 S 값을 비교하면서 하였다.

여기서 문제는 값이 S보다 커질 때였다.

만약에서 S보다 커질 경우에는 자연수의 합에서 중간의 값만 빼면 되기 때문에

for 문을 돌렸을 때 N의 최댓값에서 하나만 빼주면 된다. 

 

예를 들면 53을 입력값을 넣을 경우

for문으로 1부터 합을 구하면 53이라는 수로 딱 안 떨어지고 

1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55

1부터 10까지 수를 다 더하면 55라는 수가 딱 떨어진다.

여기서 2만 빼주면 되니깐 N의 최댓값은 9가 된다.

 

다음 포스팅에서 만나요!

728x90
728x90