[๋ฐฑ์ค] 18185๋ฒ - ๋ผ๋ฉด ์ฌ๊ธฐ (Small) (C++)
18185๋ฒ: ๋ผ๋ฉด ์ฌ๊ธฐ (Small)
๋ผ๋ฉด๋งค๋์ ๊ต์ค์ด๋ค ์ง ์ฃผ๋ณ์๋ N๊ฐ์ ๋ผ๋ฉด ๊ณต์ฅ์ด ์๋ค. ๊ฐ ๊ณต์ฅ์ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง ์ฐจ๋ก๋๋ก ๋ฒํธ๊ฐ ๋ถ์ฌ๋์ด ์๋ค. ๊ต์ค์ด๋ i๋ฒ ๊ณต์ฅ์์ ์ ํํ๊ฒ Ai๊ฐ์ ๋ผ๋ฉด์ ๊ตฌ๋งคํ๊ณ ์ ํ๋ค(1 ≤ i
www.acmicpc.net
๋ฌธ์
๋ผ๋ฉด๋งค๋์ ๊ต์ค์ด๋ค ์ง ์ฃผ๋ณ์๋ N๊ฐ์ ๋ผ๋ฉด ๊ณต์ฅ์ด ์๋ค. ๊ฐ ๊ณต์ฅ์ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง ์ฐจ๋ก๋๋ก ๋ฒํธ๊ฐ ๋ถ์ฌ๋์ด ์๋ค. ๊ต์ค์ด๋ i๋ฒ ๊ณต์ฅ์์ ์ ํํ๊ฒ Ai๊ฐ์ ๋ผ๋ฉด์ ๊ตฌ๋งคํ๊ณ ์ ํ๋ค(1 ≤ i ≤ N).
๊ต์ค์ด๋ ์๋์ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ผ๋ฉด์ ๊ตฌ๋งคํ ์ ์๋ค.
- i๋ฒ ๊ณต์ฅ์์ ๋ผ๋ฉด์ ํ๋ ๊ตฌ๋งคํ๋ค(1 ≤ i ≤ N). ์ด ๊ฒฝ์ฐ ๋น์ฉ์ 3์์ด ๋ ๋ค.
- i๋ฒ ๊ณต์ฅ๊ณผ (i+1)๋ฒ ๊ณต์ฅ์์ ๊ฐ๊ฐ ๋ผ๋ฉด์ ํ๋์ฉ ๊ตฌ๋งคํ๋ค(1 ≤ i ≤ N1). ์ด ๊ฒฝ์ฐ ๋น์ฉ์ 5์์ด ๋ ๋ค.
- i๋ฒ ๊ณต์ฅ๊ณผ (i+1)๋ฒ ๊ณต์ฅ, (i+2)๋ฒ ๊ณต์ฅ์์ ๊ฐ๊ฐ ๋ผ๋ฉด์ ํ๋์ฉ ๊ตฌ๋งคํ๋ค(1 ≤ i ≤ N2). ์ด ๊ฒฝ์ฐ ๋น์ฉ์ 7์์ด ๋ ๋ค.
์ต์์ ๋น์ฉ์ผ๋ก ๋ผ๋ฉด์ ๊ตฌ๋งคํ๊ณ ์ ํ ๋, ๊ต์ค์ด๊ฐ ํ์ํ ๊ธ์ก์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ๋ผ๋ฉด ๊ณต์ฅ์ ๊ฐ์๋ฅผ ์๋ฏธํ๋ ์์ฐ์ N๊ฐ ์ฃผ์ด์ง๋ค.
๋๋ฒ์งธ ์ค์ N๊ฐ์ ์ ์ A1, ···, AN๊ฐ ์ฌ์ด์ ๊ณต๋ฐฑ์ ๋๊ณ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ๊ต์ค์ด๊ฐ ํ์ํ ์ต์ ๊ธ์ก์ ์ถ๋ ฅํ๋ค.
์ ํ
๋ชจ๋ ์ ๋ ฅ ๋ฐ์ดํฐ๋ ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ค.
- 3 ≤ N ≤ 10^4
- 0 ≤ Ai ≤ 10^4 (1 ≤ i ≤ N)
์์ ์ ๋ ฅ 1
3
1 0 1
์์ ์ถ๋ ฅ 1
6
์์ ์ ๋ ฅ 2
5
1 1 1 0 2
์์ ์ถ๋ ฅ 2
13
ํ์ด๊ณผ์
๋ฌธ์ ์ ์๊ณ ๋ฆฌ์ฆ ๋ถ์ผ๊ฐ ๊ทธ๋ฆฌ๋์๊ณ ๋ฆฌ์ฆ์ด๋ค๋ณด๋ ์ผ๋จ ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์ ํ์์ ์ธ์ฐ๋๊ฒ์ ์ง์คํด๋ณด์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌธ์ ์ ์กฐ๊ฑด์ด
- A[i] ๋ผ๋ฉด ๊ตฌ๋งค = 3์
- A[i], A[i+1] ๋ผ๋ฉด ๊ตฌ๋งค = 5์
- A[i], A[i+1], A[i+2] ๋ผ๋ฉด ๊ตฌ๋งค = 7์
๋ผ๋ ๊ธฐ๋ณธ์ ์ ์กฐ๊ฑด์ผ๋ก ๊น๋ ค์์ด์ ํด๋น ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ ํ์์ ๊ณ์ฐํ๊ฒ ๋์์ต๋๋ค.
์ ํ์์ ๊ตฌ์ฑํ๋ฉด์ ์ ๊ฒฝ์ฐ์๋ ๋ถ๋ถ๋ค์ด
- [2] [0] [2] ์ด๋ฌํ ์์ผ๋ก ๊ฐ์ด ๋ค์ด์ฌ๋ 3๋ฒ๋ฐฉ์์ผ๋ก 2๋ฒ ๊ตฌ๋งคํ๋๊ฒ ์ด๋์ธ๊ฐ 1๋ฒ๋ฐฉ์์ผ๋ก 4๋ฒ ๊ตฌ๋งคํ๋๊ฒ ์ด๋์ธ๊ฐ?
[2] [0] [2] ์ด๋ฌํ ์์ผ๋ก ๊ฐ์ด ๋ค์ด์ฌ๋ 3๋ฒ๋ฐฉ์์ผ๋ก 2๋ฒ ๊ตฌ๋งคํ๋๊ฒ ์ด๋์ธ๊ฐ 1๋ฒ๋ฐฉ์์ผ๋ก 4๋ฒ ๊ตฌ๋งคํ๋๊ฒ ์ด๋์ผ๊น๋ฅผ
๊ณ ๋ฏผํ์์๋๋ 7 * 2 = 14 , 3 * 4 = 12 ์ด๋ฏ๋ก ๊ฐ์ด ์ฐ๋ฌ์ ๋์ด์์ง์๋ค๋ฉด ๋ฐ๋ก์ฌ๋๊ฒ ์ด๋์ด๋ค๋ผ๋ ๋ผ๋ ๊ฒฐ๋ก ์ด ๋์์๋ค. - ๋ฌด์กฐ๊ฑด ๋ผ๋ฉด๊ณต์ฅ์ด ์ฐ๋ฌ์ ์ด์ด์ ธ์๋ค๋ฉด ํ๋ฒ์ 3๊ฐ ์ฌ๋๊ฒ ์ด๋์ธ๊ฐ?
ํด๋น ์กฐ๊ฑด์ ๋ํด์๋ ์ฒ์์๋ ๋น์ฐํ 3๊ฐ๋ฅผ ์ฌ๋๊ฒ ํจ์ฌ ์ด๋์ด๋๊น 3๊ฐ๋ฅผ ํ๋ฒ์ ์ฌ์ผ๋์ง์๋ ๋ผ๊ณ ์๊ฐ์ ํ๊ณ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ์๋๋ฐ ๋ฌธ์ ์ ํค ํฌ์ธํธ๊ฐ ๋๋ ๋ฐ๋ก๊ฐ ์์๋ค. ( ์ถํ ์ค๋ช ) - ์ด๋ ํ ๊ฒฝ์ฐ์ ๋ผ๋ฉด์ ๊ตฌ๋งคํด์ผํ๋๊ฐ?
๊ธฐ๋ณธ์ ์ผ๋ก ๋ผ๋ฉด์ ํ๋ฒ์ ๋ง์ด ๊ตฌ๋งคํ ์๋ก ์ด๋์ด๋ฏ๋ก 3, 2, 1๊ฐ ์์ผ๋ก ๋ผ๋ฉด์ ๊ฐ์๋ฅผ ํ์ธํ๋ค. ํ์ฌ ๊ฒ์ฌํ๋ ๊ฐ ๊ธฐ์ค์ผ๋ก A[i], A[i+1], A[i+2] ์ด 3๊ฐ์ง๊ฐ ๋ชจ๋ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค๋ฉด ๊ตฌ๋งค๋ฅผ ํ๊ณ ๊ทธ ๋ค์์ A[i], A[i+1] 2๊ฐ์ง๊ฐ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค๋ฉด ๊ตฌ๋งค๋ฅผ ํ๊ณ A[i] ๊ฐ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค๋ฉด ๊ตฌ๋งค๋ฅผ ํ๋ ๋ฐฉ์์ผ๋ก ์ฐจ๊ทผ ์ฐจ๊ทผ ํ์ฌ ๊ฒ์ฌํ๋ ๊ฐ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ ๊ฐ์ ๊ตฌ๋งคํ๊ณ ๋์ด๊ฐ๋ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
#include <iostream>
#include <algorithm>
int main(void)
{
int n, temp, money, a[10001] = {0};
std::cin >> n;
money = 0;
for(int i = 0; i < n; i++)
std::cin >> a[i];
for(int i = n - 1; i >= 0; i--) {
if (a[i] > 0) {
if (0 < a[i] && 0 < a[i-1] && 0 < a[i-2]) {
temp = std::min(std::min(a[i], a[i-1]), a[i-2]);
money += (7 * temp);
a[i-2] -= temp;
a[i-1] -= temp;
a[i] -= temp;
}
if (0 < a[i] && 0 < a[i-1]) {
temp = std::min(a[i], a[i-1]);
money += (5 * temp);
a[i-1] -= temp;
a[i] = temp;
}
if (0 < a[i]) {
money += (3 * a[i]);
a[i] = 0;
}
}
}
std::cout << money;
return (0);
}
์์์ ์ธ์๋์๋ ์๋๋ก ์ฝ๋๋ฅผ ๊ตฌ์ฑํ์๋๋ฐ ํ๋ ธ๋ค๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ ์์๋ค. ๊ทธ๋์ ์ ํ๋ ธ์๊น ๊ณ ๋ฏผ์ ๋ง์ด ํ์๋๋ฐ
๊ธ ์ฝ๊ธฐ - ํ๋ ธ์ต๋๋ค. ๋ฐ๋ก ์ผ์ด์ค
๋๊ธ์ ์์ฑํ๋ ค๋ฉด ๋ก๊ทธ์ธํด์ผ ํฉ๋๋ค.
www.acmicpc.net
๋ผ๋ ๋ฐ๋ก๊ฐ ์๋ค๋ ๊ฒ์ ์ฐพ๊ฒ ๋์๋ค. ์ ๊ธ์์ ์ด์ผ๊ธฐํ๋ ๋ฐฉ์์ ์ ๋ ฅ๊ฐ์ด
4
2 3 2 1
ํ์์ผ๋ก ๋ค์ด์ค๊ฒ ๋ ๋ ์ฒ๋ฆฌ๋ฐฉ์์ด ํญ์ 3๊ฐ๋ฅผ ์ฐ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ์ฐ๊ฒ ๋๋ฉด
[2] [3] [2] [1]
[1] [2] [1] [1]
[0] [1] [0] [1]
[0] [0] [0] [1]
[0] [0] [0] [0]
์ธ ๋ฐฉ์์ผ๋ก 7 + 7 + 3 + 3 ์ผ๋ก ์ด 20์ด๋ผ๋ ๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋๊ณ
[2] [3] [2] [1]
[1] [2] [1] [1]
[0] [1] [1] [1]
[0] [0] [0] [0]
์ค๊ฐ์ 2๊ฐ๊ฐ ์ฐ๋ฌ์ ์๋๊ฒฝ์ฐ๋ฅผ 3๊ฐ๊ฐ ์ฐ๋ฌ์ ์๋๊ฒฝ์ฐ๋ณด๋ค ์ํฉ์ ๋ฐ๋ผ ๋จผ์ ์ฒ๋ฆฌ๋ฅผ ํ๊ฒ ๋๋ค๋ฉด 7 + 5 + 7 = 19 ๋ก ๋ ์์ ๊ฐ์ ๊ตฌํ ์ ์๊ฒ ๋๋ค.
๊ทธ๋์ ์ ๋ฐ ๋ฐ๋ก ์ผ์ด์ค๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ์์ ํด์ฃผ๋ ์์ ์ ํด์คํ์๊ฐ ์์ด๋ณด์๋ค.
3๊ฐ๊ฐ ์ฐ๋ฌ์ ์๋ ๊ฒฝ์ฐ์ 3๊ฐ๋ฅผ ๋ฐ๋ก๋ฐ๋ก ์์ ๋ ๋ฐฉ์์ ์ฌ์ฉํ๊ฒ ๋๋ฉด [1] [0] [1] ๊ฐ์ ์ฐ๊ฒฐ์ ์ด ๋์ด์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์๋ ์ ์์ด์
A[i + 1] ๋ณด๋ค A[i + 2] ์ด ํฌ๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ์๋ง 3๊ฐ์ฉ ๋จผ์ ์์ ๋ ์ผ์ ์งํํ๋ ์์ผ๋ก ์ฝ๋๋ฅผ ๋ณํํ์ฌ ์ ์ถ์ ํ์๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
code
#include <iostream>
#include <algorithm>
int main(void)
{
int n, money, a[10001] = {0};
std::cin >> n;
money = 0;
for(int i = 0; i < n; i++)
std::cin >> a[i];
for(int i = 0; i < n; i++) {
while (0 < a[i]) {
if (a[i+1] <= a[i+2] && 0 < a[i] && 0 < a[i+1] && 0 < a[i+2]) {
money += 7;
a[i+2]--;
a[i+1]--;
a[i]--;
}
else if (0 < a[i] && 0 < a[i+1]) {
money += 5;
a[i+1]--;
a[i]--;
}
else if (0 < a[i]) {
money += 3;
a[i]--;
}
}
}
std::cout << money;
return (0);
}
ํ๊ธฐ
“๋ฐฑ์ค ์์ ๋ฌธ์ ๋ ์ผ๋ง๋ ์ด๋ ค์ธ๊น”๋ผ๋ ๊ถ๊ธ์ฆ์์ ์์ํ๊ฒ ๋์ด ๋ฌธ์ ๋ฅผ ์ญ์ฑ ๋์๋ณด๋ค๊ฐ ๊ทธ ๋๋ง ๋ฌธ์ ๊ฐ ์ ๊ทผํ ๋ง ํ๊ฑฐ๊ฐ์์ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๊ฒ ๋์์ต๋๋ค.
๋ฌธ์ ๊ฐ ๋ค์ด์์ธ๋งํผ ํ์คํ ์ ํ์์ ์ธ์ฐ๋๊ฒ ์ด๋ ค์ ๋ ๊ฑฐ ๊ฐ์ต๋๋ค.