코딩테스트/백준

백준 1789번 수들의 합 풀이/해설/코드 (파이썬)

RyanKwon 2021. 10. 2. 10:00
728x90

코드만 궁금한 분은 링크

GitHub - Rhyankwon/algorithms

Contribute to Rhyankwon/algorithms development by creating an account on GitHub.

github.com


임의의 숫자가 하나 주어진다. 이 숫자를 임의의 자연수들의 합으로 나타낼 때 각각 다른 최대 몇개의 자연수들의 합으로 이 수를 나타낼 수 있을까?

어..어..어떻게풀지..! 라는 생각을 처음에 잠깐 할지 모르지만 조금만 생각해보면 쉬운 문제이다.

3을 생각해보자. 1+2 이렇게 두개로 나타낼 수 있다. 5를 생각해보자. 2+3으로 나타낼 수 있다. 이는 1+2+3에서 앞의 1을 뺀 값이다.

8을 생각해보자. 1+2+3+4는 10이라, 2가 더 크다. 그럼 여기에서 2를 빼보면 1 + 3+ 4로 나타낼 수 있다.

200을 생각해보자. 1+..20은 210이다. 그럼 10을 빼면 되니까 19개의 수로 나타낼 수 있다.

어.. 여기서 내가 하고싶은 말은, 일단 우리는 가능한 자연수 갯수의 최댓값을 구해야하고 반드시 1부터 값을 더해가야 한다.

그러다보면 값이 딱 맞는 경우가 생기고 - > 지금 수를 반환하면 됨

값이 우리가 원하는 값보다 큰 경우가 생긴다. 이 때에 그.. 값의 차이는 어차피 앞에서 카운트 한 적이 있는 숫자이기 때문에 이 때 그 수를 빼버리면 우리가 원하는 수를 만족하게 된다. - > 지금까지 카운트한 수 -1을 반환하면 된다.

728x90