https://www.acmicpc.net/problem/2309
2309๋ฒ: ์ผ๊ณฑ ๋์์ด
์ํ ๊ฐ์ ์ค์ ๊ฑธ์ณ ๋์์ด๋ค์ ํค๊ฐ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ํค๋ 100์ ๋์ง ์๋ ์์ฐ์์ด๋ฉฐ, ์ํ ๋์์ด์ ํค๋ ๋ชจ๋ ๋ค๋ฅด๋ฉฐ, ๊ฐ๋ฅํ ์ ๋ต์ด ์ฌ๋ฌ ๊ฐ์ง์ธ ๊ฒฝ์ฐ์๋ ์๋ฌด๊ฑฐ๋ ์ถ๋ ฅํ๋ค.
www.acmicpc.net
๋ฌธ์
์๋น๋ฅผ ํผํด ์ผ๊ณฑ ๋์์ด๋ค๊ณผ ํจ๊ป ํํ๋กญ๊ฒ ์ํํ๊ณ ์๋ ๋ฐฑ์ค ๊ณต์ฃผ์๊ฒ ์๊ธฐ๊ฐ ์ฐพ์์๋ค. ์ผ๊ณผ๋ฅผ ๋ง์น๊ณ ๋์์จ ๋์์ด๊ฐ ์ผ๊ณฑ ๋ช ์ด ์๋ ์ํ ๋ช ์ด์๋ ๊ฒ์ด๋ค.
์ํ ๋ช ์ ๋์์ด๋ ๋ชจ๋ ์์ ์ด "๋ฐฑ์ค ๊ณต์ฃผ์ ์ผ๊ณฑ ๋์์ด"์ ์ฃผ์ธ๊ณต์ด๋ผ๊ณ ์ฃผ์ฅํ๋ค. ๋ฐ์ด๋ ์ํ์ ์ง๊ด๋ ฅ์ ๊ฐ์ง๊ณ ์๋ ๋ฐฑ์ค๊ณต์ฃผ๋, ๋คํ์ค๋ฝ๊ฒ๋ ์ผ๊ณฑ ๋์์ด์ ํค์ ํฉ์ด 100์ด ๋จ์ ๊ธฐ์ตํด ๋๋ค.
์ํ ๋์์ด์ ํค๊ฐ ์ฃผ์ด์ก์ ๋, ๋ฐฑ์ค๊ณต์ฃผ๋ฅผ ๋์ ์ผ๊ณฑ ๋์์ด๋ฅผ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
โ
์ ๋ ฅ
์ํ ๊ฐ์ ์ค์ ๊ฑธ์ณ ๋์์ด๋ค์ ํค๊ฐ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ํค๋ 100์ ๋์ง ์๋ ์์ฐ์์ด๋ฉฐ, ์ํ ๋์์ด์ ํค๋ ๋ชจ๋ ๋ค๋ฅด๋ฉฐ, ๊ฐ๋ฅํ ์ ๋ต์ด ์ฌ๋ฌ ๊ฐ์ง์ธ ๊ฒฝ์ฐ์๋ ์๋ฌด๊ฑฐ๋ ์ถ๋ ฅํ๋ค.
์ถ๋ ฅ
์ผ๊ณฑ ๋์์ด์ ํค๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅํ๋ค. ์ผ๊ณฑ ๋์์ด๋ฅผ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
โ
๋ธ๋ฃจํธ ํฌ์ค
์ง์น์ ๋ปํ๋ brute์ ํ์ ๋ปํ๋ force์ ํฉ์ฑ์ด๋ก ๋ํญํ ํ์ด๋ผ๋ ๋ป์ด๋ค. ์ ์๊ณ ๋ฆฌ์ฆ์ด ๋ํญํ ํ์ด๋ผ๋ ๋ป์ ๊ฐ์ง๊ฒ ๋์์๊น? ๊ทธ ์ด์ ๋ ๋ธ๋ฃจํธ ํฌ์ค ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํ ํน์ง์์ ์ฐพ์ ์ ์๋ค.
โ
โท ํ์ ๋ฐฉ๋ฒ
๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค ํ์ํด๋ณด๋ ๋ฐฉ๋ฒ์ด๋ค.
โ
โท ์ฅ๋จ์
์ฅ์ : ๊ตฌํ์ด ์ฝ๊ณ , ํญ์ 100% ํ๋ฅ ๋ก ์ ๋ต์ ๋ณด์ฅํ๋ค.
๋จ์ : ์๊ฐ์ ์ธก๋ฉด์์ ๋นํจ์จ์ ์ด๋ค. ๋ฐ๋ผ์ ๋ฌธ์ ๊ฐ ์กฐ๊ธ๋ง ๋ณต์กํด์ ธ๋ ๋งค์ฐ ๋นํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด ๋ ์ ์๋ค.
โ
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
๋ธ๋ฃจํธ ํฌ์ค์ ๋ฐ๋์ ์ฑ๊ฒฉ์ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ด ์๋๋ฐ ๊ทธ๊ฒ์ ๋ฐ๋ก ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋งค ์๊ฐ ๋น์์ ๊ฐ์ฅ ์ข๋ค๊ณ ์๊ฐ๋๋ ๊ฒ์ ํด๋ต์ผ๋ก ์ ํํ๋ค. Greedy ์์ฌ์ด๋ผ๋ ๋ป์ ๊ฐ์ง ์ด์ ์ด๋ค.
โ
โท ์ฅ๋จ์
์ฅ์ : ์ต์ ํด์ ๊ทผ์ฌํ ๊ฐ์ ๋น ๋ฅด๊ฒ ๊ตฌํ ์ ์๋ค.
๋จ์ : ๊ตฌํ ๊ฐ์ด ๋ฌด์กฐ๊ฑด ์ ๋ต์ด๋ผ๋ ๋ณด์ฅ์ด ์๋ค.
์ฝ๋ ์ค๋ช
1. algorithm ํค๋
โ
sort ํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ํฌํจํ ํค๋์ด๋ค.
sort ํจ์๋ฅผ ์ง์ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ์ ์ฉํ ํจ์์ด๋ค.
sort ํจ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
sort(๋ฐฐ์ด์ ์์์ ์ฃผ์, ๋ฐฐ์ด์ ๋ง์ง๋ง ์ฃผ์ + 1)๊ณผ ๊ฐ์ ํ์์ผ๋ก ์ฌ์ฉํ๋ค.
๋ง์ฝ 10๊ฐ์ ์์๋ฅผ ๊ฐ์ง ๋ฐฐ์ด a๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ค๋ฉด, sort(a, a+10)๊ณผ ๊ฐ์ด ํ๋ฉด ๋๋ค.
โ
2. sevenDwarfs ํจ์
โ
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (sum - arr[i] - arr[j] == 100) {
for (int k = 0; k < n; k++) {
if (i == k || j == k) continue;
cout << arr[k] << '\n';
}
return 0;
}
}
}
โ
- ์ฒซ ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ
for (int i = 0; i < n; i++)
๋ฐฐ์ด์ ์ฒ์ ์ธ๋ฑ์ค๋ถํฐ ๋๊น์ง ํ์ํ๋ค.
- ๋ ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ
for (int j = i + 1; j < n; j++)
๋ฐฐ์ด์ ๋ค์ ์ธ๋ฑ์ค๋ถํฐ ๋๊น์ง ํ์ํ๋ค.
์ด์ค for ๋ฌธ์ ํตํด i๋ ์ผ๊ณฑ ๋์์ด์ ์ํ์ง ์์ ๋์์ด 1๋ช ์ ๊ฐ๋ฆฌํค๊ณ , j๋ ๋ ๋ค๋ฅธ ์ผ๊ณฑ ๋์์ด์ ์ํ์ง ์์ ๋์์ด 1๋ช ์ ๊ฐ๋ฆฌํจ๋ค.
- i ๋์์ด์ j ๋์์ด๋ฅผ ๋นผ๊ณ ํฉ์ด 100์ด ๋๋์ง ๊ฒ์ฌ
if (sum - arr[i] - arr[j] == 100)
- ํฉ์ด 100์ผ ๋
if (i == k || j == k) continue;
ํฉ์ด 100์ด๋ฉด ์ผ๊ณฑ ๋์์ด๊ฐ ๋ง์ผ๋ฏ๋ก ์ถ๋ ฅํ๋ค.
์ด๋ k๊ฐ i์ด๊ฑฐ๋ j ์ด๋ฉด continue๋ฅผ ํตํด ๊ฑด๋๋ด๋ค.
์ฝ๋
#include <iostream>
#include <algorithm>
using namespace std;
int const n = 9;
int sevenDwarfs(int sum, int *arr)
{
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (sum - arr[i] - arr[j] == 100) {
for (int k = 0; k < n; k++) {
if (i == k || j == k) continue;
cout << arr[k] << '\n';
}
return 0;
}
}
}
}
int main() {
int arr[n];
int sum = 0;
for (int i = 0; i < n; i++) {
cin >> arr[i];
sum += arr[i];
}
sort(arr, arr + n);
sevenDwarfs(sum, arr);
return 0;
}

'๋ฐฑ์ค ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]14888๋ฒ_๋ฐฑ ํธ๋ํน_์ฐ์ฐ์ ๋ผ์ ๋ฃ๊ธฐ (0) | 2022.06.11 |
---|---|
[๋ฐฑ์ค] 2580๋ฒ_๋ฐฑํธ๋ํน_์ค๋์ฟ (0) | 2022.06.11 |
[๋ฐฑ์ค] 1991๋ฒ_์๊ณ ๋ฆฌ์ฆ_ํธ๋ฆฌ ์ํ (0) | 2022.06.11 |
[๋ฐฑ์ค] 10845๋ฒ_์๊ณ ๋ฆฌ์ฆ_์๋ฃ๊ตฌ์กฐ_ํ (0) | 2022.06.11 |
[๋ฐฑ์ค] 10828๋ฒ_์๊ณ ๋ฆฌ์ฆ_์๋ฃ๊ตฌ์กฐ_์คํ (0) | 2022.06.11 |