[백준 16239] Nadan (C#, C++) - soo:bak
작성일 :
문제 링크
설명
총 K 쿠나를 N개 프로젝트에 나눠줍니다. 모든 프로젝트는 양의 정수 금액을 받아야 하며, 서로 다른 금액을 받아야 합니다.
항상 해가 존재한다고 보장되므로, 한 가지 가능한 배분을 출력하는 문제입니다.
접근법
먼저, 가장 간단한 서로 다른 양의 정수 집합은 1, 2, 3, …, N-1입니다.
다음으로, 이들의 합은 N*(N-1)/2이므로 남은 금액을 마지막 프로젝트에 몰아주면 모든 금액이 서로 달라집니다.
이후, 보장 조건에 의해 남은 금액도 양수가 됩니다. N이 1이면 전부 K를 줍니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
namespace Solution {
class Program {
static void Main(string[] args) {
var K = int.Parse(Console.ReadLine()!);
var N = int.Parse(Console.ReadLine()!);
if (N == 1) {
Console.WriteLine(K);
return;
}
for (var i = 1; i < N; i++)
Console.WriteLine(i);
var remaining = K - (N * (N - 1) / 2);
Console.WriteLine(remaining);
}
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int K, N; cin >> K >> N;
if (N == 1) {
cout << K << "\n";
return 0;
}
for (int i = 1; i < N; i++)
cout << i << "\n";
int remaining = K - (N * (N - 1) / 2);
cout << remaining << "\n";
return 0;
}