[C++] 백준 1789번 풀이 (수들의 합)

정민경·2023년 1월 13일
0

baekjoon

목록 보기
16/57
post-thumbnail

- 문제 (1789번) : 수들의 합

  • 어떠한 자연수들의 합 S 가 주어졌을 때 서로 다른 자연수의 최대 갯수 N 구하기

- 입력 및 출력

[입력]

  • 첫째줄에 자연수들의 합 S 입력
    (1 ≤ S ≤ 4,294,967,295 & S는 자연수)

[출력]

  • 서로다른 자연수의 최대 개수 N 출력

- 문제 풀이

  • 서로 다른 자연수의 최대개수를 구하는 문제이기 때문에 무조건 1부터 더한다.

    1부터 계속 더해가다보면 입력받은 S보다 커지거나, S와 같아질 때가 있다.

    1. S보다 큰 상황
      ---> 가장 마지막에 더한 값 -1이 제일 큰 N
      • S보다 크기 때문에 1부터 가장 마지막에 더한 값 사이에서 초과된 값을 빼야한다.
        ( 이 때, 1 ≤ S보다 초과된 값 ≤ 마지막에 더한 값 이 당연히 성립하므로 )

    2. S와 같은 상황
      ---> 가장 마지막에 더한 값이 제일 큰 N
  • 나는 위와 같은 상황을 따로 더하는 것이 아닌 S에서 1부터 빼며 해결함.

    ※ S의 크기를 고려해야함. ( 처음에 int로 했다가 틀렸음. )


- 최종 코드

1개의 댓글

comment-user-thumbnail
2023년 1월 13일

멋져...

답글 달기