๐Ÿ’ญ Problem Solving

[BOJ][C++] ๋ฐฑ์ค€ 1789๋ฒˆ: ์ˆ˜๋“ค์˜ ํ•ฉ

0=2. 2024. 10. 29. 16:35

๋ฌธ์ œ

https://www.acmicpc.net/problem/1789

 

๋ฌธ์ œ ์ดํ•ด

์„œ๋กœ ๋‹ค๋ฅธ N๊ฐœ์˜ ์ž์—ฐ์ˆ˜์˜ ํ•ฉ์ด S์ด๋‹ค. S๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ N์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•œ๋‹ค.

 

๋ฌธ์ œ ํ’€์ด

๐Ÿ’ก ์•„์ด๋””์–ด

  • N์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋ ค๋ฉด, ์ž์—ฐ์ˆ˜๋ฅผ 1๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๋”ํ•˜๋Š” ๋ฐฉ์‹์„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 1 + 2 + 3 + 4 + ... = S ์ด๋Ÿฐ์‹์œผ๋กœ ๋”ํ•  ๊ฒฝ์šฐ N์ด ์ตœ๋Œ€๊ฐ€ ๋œ๋‹ค.
  • 1 + 2+ 3 + ... + n = n * (n + 1) / 2 ์ธ ์ ์„ ์ด์šฉํ•ด์„œ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ์˜ˆ: 200
    • 1 + 2 + 3 + ... + 18 + 19 = 190 ์—์„œ 10์„ ๋”ํ•˜๋ฉด, ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜๋ผ๋Š” ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•œ๋‹ค.
    • 1 + 2 + 3 + ... + 17 + 18 = 171 ์ด๋ฏ€๋กœ, 29๋ฅผ ๋”ํ•˜๋ฉด 200์ด ๋œ๋‹ค.
    • N์˜ ์ตœ๋Œ“๊ฐ’์€ 19์ด๋‹ค.

 

๐Ÿ”จ ๊ตฌํ˜„

  • ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•˜์—ฌ S์—์„œ ์ž์—ฐ์ˆ˜ 1๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๋บ€๋‹ค.
  • ์ข…๋ฃŒ ์กฐ๊ฑด์€ S๊ฐ€ 0๋ณด๋‹ค ์ž‘์•„์ง€๋ฉด ๋”์ด์ƒ ๋บ„ ์ˆ˜ ์—†์Œ์„ ์ด์šฉํ•œ๋‹ค.

 

๐Ÿšจ S์˜ ํฌ๊ธฐ

      S์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋Š” 4,294,967,295์ด๋ฏ€๋กœ int ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•œ๋‹ค.

 

์ฝ”๋“œ

#include<iostream>

using namespace std;

int main() {

    long long s;
    int n = 1;
    cin >> s;

    while (s >= n) {
        s -= n++;
    }

    cout << n - 1;

    return 0;
}