์ปดํจํฐ์ค์์ ์์ ์ค์ธ ์ ๋ณด ์ ์๋์ ๋๋๋ฐฉ๊ธฐ์ ์จ๋๋ฅผ ์กฐ์ ํ๋ ค๊ณ ํ๋ค.
๋๋๋ฐฉ๊ธฐ๊ฐ ๋ฉ๋ฆฌ ์์ด์ ๋ฆฌ๋ชจ์ปจ์ผ๋ก ์กฐ์ํ๋ ค๊ณ ํ๋๋ฐ, ๋ฆฌ๋ชจ์ปจ์ ์จ๋ ์กฐ์ ๋ฒํผ์ ๋ค์๊ณผ ๊ฐ๋ค.
1) ์จ๋๋ฅผ 1๋ ์ฌ๋ฆฌ๋ ๋ฒํผ
2) ์จ๋๋ฅผ 1๋ ๋ด๋ฆฌ๋ ๋ฒํผ
3) ์จ๋๋ฅผ 5๋ ์ฌ๋ฆฌ๋ ๋ฒํผ
4) ์จ๋๋ฅผ 5๋ ๋ด๋ฆฌ๋ ๋ฒํผ
5) ์จ๋๋ฅผ 10๋ ์ฌ๋ฆฌ๋ ๋ฒํผ
6) ์จ๋๋ฅผ 10๋ ๋ด๋ฆฌ๋ ๋ฒํผ
์ด์ ๊ฐ์ด ์ด 6๊ฐ์ ๋ฒํผ์ผ๋ก ๋ชฉํ ์จ๋๋ฅผ ์กฐ์ ํด์ผ ํ๋ค.
ํ์ฌ ์ค์ ์จ๋์ ๋ณ๊ฒฝํ๊ณ ์ํ๋ ๋ชฉํ ์จ๋๊ฐ ์ฃผ์ด์ง๋ฉด ์ด ๋ฒํผ๋ค์ ์ด์ฉํ์ฌ ๋ชฉํ ์จ๋๋ก ๋ณ๊ฒฝํ๊ณ ์ ํ๋ค.
์ด ๋ ๋ฒํผ ๋๋ฆ์ ์ต์ ํ์๋ฅผ ๊ตฌํ์์ค.
(์๋ฅผ ๋ค์ด, 7๋์์ 34๋๋ก ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ,
7 -> 17 -> 27 -> 32 -> 33 -> 34
์ด๋ ๊ฒ ์ด 5๋ฒ ๋๋ฅด๋ฉด ๋๋ค.)
์ ๋ ฅ : ํ์ฌ ์จ๋a ์ ๋ชฉํ ์จ๋b๊ฐ ์ ๋ ฅ๋๋ค. ( 0 <= a , b <= 40 )
ex : 7 34
์ถ๋ ฅ : ์ต์ํ์ ๋ฒํผ ์ฌ์ฉ์ผ๋ก ๋ชฉํ์จ๋๊ฐ ๋๋ ๋ฒํผ์ ํ์๋ฅผ ์ถ๋ ฅํ๋ค.
ex : 5
์ฒ์ ๋ฌธ์ ๋ฅผ ๋ดค์๋, ๊ฑฐ์ค๋ฆ๋ ๋ฌธ์ ๊ฐ ์๊ฐ๋ฌ๋ค.
๊ฑฐ์ฌ๋ฌ ์ค์ผํ ๋์ ์ ์ต์ ๊ฐฏ์๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์ฉํ๋ฉด ์ฝ๊ฒ ํ์ ์์ ๊ฒ ๊ฐ์ ๋๋!
์ฒ์ ๋ง ์ง๋ณธ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
#include <iostream>
using namespace std;
int main() {
int curT, objT, i, j = 0;
cin >> curT >> objT;
int button[6] = {10, -10, 5, -5, 1, -1};
if (objT - curT >= 0) {
i = 0;
for (; i < 6; i += 2) {
for (; curT + button[i] <= objT; j++) {
curT += button[i];
}
}
} else {
i = 1;
for (; i < 7; i += 2) {
for (; curT + button[i] >= objT; j++) {
curT += button[i];
}
}
}
cout << j;
return 0;
}
ํ์ฌ ์จ๋๋ฅผ ๋์ด๊ฑฐ๋ ๋ด๋ฆด๋ button[i]๋ณด๋ค ๋๊ฑฐ๋ ๋ฎ์๊ฒฝ์ฐ, ๋ค์ ๋ฒํผ์ ์ฌ์ฉํ๋ ์์ด๋ค.
ํ์ง๋ง..์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ฌธ์ ๊ฐ ์์์ผ๋...
์๋ฅผ๋ค์ด ํ์ฌ ์จ๋๊ฐ 22๋ ์ด๊ณ , ๋ชฉํ ์จ๋๊ฐ 3๋๋ผ๊ณ ํ์.
๋ด ์๊ณ ๋ฆฌ์ฆ ๋๋ก๋ผ๋ฉด
22-10 = 12
12-10 = 2 < 3์ด๋ฏ๋ก ๋ฒํผ์ ๋ฐ๊พผ๋ค.
12 - 5 = 7
7 - 5 = 2 < 3 ์ด๋ฏ๋ก ๋ฒํผ์ ๋ฐ๊พผ๋ค.
5-1 = 4
4-1 = 3
์ด ๊ณผ์ ์ ์ด 6๋ฒ ๋ฒํผ์ ๋๋ฌ์ผ ํ๋ค. ํ์ง๋ง ๋ณด์๋ค์ํผ ์ ๋ต์ 3๋ฒ์ด๋ค.
...? ์!!! ์จ๋๋ฅผ ์ฌ๋ฆฌ๊ฑฐ๋ ๋ด๋ฆด์ ์์์ง!!!ใ
ใ
22 - 10 = 12
22 - 10 = 2
2 + 1 = 3
๊ธฐ์ด 100์ ๋ฅผ ํ๋๊น์ง๋งํด๋ ์์์ ๋จธ๋ฆฌ์ข ๊ตด๋ฆฌ๋ค๋ณด๋ฉด ํ๋ ธ๋๋ฐ, ์ด๋ฒ์ ๊ทธ๋ ์ง ์์๋ค.
๋ฐ...๊ทธ๋ฅ ์ถ์ฐ๋ฉด ์ถ์ด๋๋ก ๋์ฐ๋ฉด ๋์ด๋๋ก ์ด๊ฒ์ด์ง...๋๋ ์์ด์ปจ ์ํ๊ณ ์ฌ๋๋ฐ..
์ ๊ทธ๋์ ์ด์จ๋ ๋ฌธ์ ๋ ํ์ด์ผ ํ๋๊น....
๋ฌธ์ ์ 4๋ฒ์งธ ํ
์คํธ์ผ์ด์ค๋ฅผ ํ๋ฒ ์์ธํ ์ดํด๋ณด์.
22๋์์ 3๋๋ก ์จ๋๋ฅผ ๋ฎ์ถ๋ ค๋ฉด 19๋๋ฅผ ๋ฎ์ถ๋ฉด ๋๋ค.
์ฆ 19๋ฅผ ์๋ฆฌ์กฐ๋ฆฌ ๋นผ๊ณ ๋ํด์ 0์ผ๋ก ๋ง๋ค๋ฉด ๋๋ค.
ํ๋ฒ์ฉ ๋ชจ๋ ๋ฒํผ์ ๋๋ฌ๋ณด๋ฉด ๋ญ๊ฐ ๊ท์น์ฑ์ด ๋ณด์ด์ง ์์๊น ์ถ์ด์ ์ญ ๋์ดํด ๋ณด์๋ค.
19 -10 = 9
-5 = 14
-1 = 18
0๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ์ ๋ค์๊ฐ์ผ๋ก ์ทจํ๋ฉด,
9 -10 = -1
-5 = 4
-1 = 7
๋ง์ฐฌ๊ฐ์ง๋ก 0๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ์ ๋ค์๊ฐ์ผ๋ก ์ทจํ๋ฉด,
-1 +10 = 9
+5 = 4
+1 = 0
์ฆ, ๋ฎ์ถ๊ฑฐ๋ ๋์ฌ์ผ ํ ์จ๋๋ฅผ 10,5,1๊ณผ ๊ฐ๊ฐ ๋ํ๊ฑฐ๋ ๋บ์๋ ๊ทธ ๊ฒฐ๊ณผ๊ฐ 0๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ์ ์ทจํ๋ฉด ๋์ง ์์๊น?
7๋์์ 34๋์ ๊ฒฝ์ฐ๋ ๋ค์ํ๋ฒ ๋์๋ณด์.
7๋์์ 34๋๋ก ๋์ด๋ ค๋ฉด 34-7 = 27. 27์ 0์ผ๋ก ๋ง๋ค๋ฉด ๋๋ค.
27 - 10 = 17 โ๏ธ
- 5 = 22
-1 = 26
17 - 10 = 7 โ๏ธ
- 5 = 12
-1 = 16
7 - 10 = -3
- 5 = 2 โ๏ธ
-1 = 6
2 - 10 = -8
-5 = -3
-1 = 1 โ๏ธ
1 - 10 = -9
-5 = -4
-1 = 0 โ๏ธ
๋ ์ฉ...! 5๋ฒ๋ง์ 0์ด ๋ ์ ์์๋ค.
์ฝ๋๋ก ์ด๋ป๊ฒ ๊ตฌํํ ์ ์์๊น ์๊ฐํ๋ ์ค ๊ฒฐ๊ณผ๊ฐ 0์ ๊ฐ๊น์ด ๊ฐ์ ์ทจํ๊ณ ๋ ํ์
๊ทธ ์๊ฐ ์์์ธ์ง ์์์ธ์ง ํ๋จ์ ํด์ผ ๋ค์์ ๋ํ๋๊ฐ ๋นผ๋๊ฐ ํ ํ
๋ฐ ๋ผ๋ ์๊ฐ์ด ๋ค์๋ค.
..?์ ๊น, ์ด์ฐจํผ -1์์ +1์ ํ๋๊ฐ, +1์์ -1์ ํ๋๊ฐ.
๋ํ ์ ์๋ ์๋ ์ ํด์ ธ์๊ณ , ๋ง์นจ ๋ถํธ๋ ์๋ก ์ ๋ถ ๋ฐ๋์ด๋ค.
์ฆ, ๊ฒฐ๊ณผ๊ฐ์์ ์ ๋๊ฐ์ ์ทจํด ์ฃผ๊ตฌ์ฅ์ฐฝ ๋นผ๊ธฐ๋ฉด ํ๋ฉด..?
๊ทธ๋ฆฌ๊ณ ์๊ณ ๋ฆฌ์ฆ์ด ๋ฐ๋ณต๋๋ ์ฌ๊ทํจ์๋ฅผ ์ฐ๋ฉด ๋ฑ์ด๊ฒ ๋ค๋ ํ๋จ์ด ๋ค์๋ค.
#include <iostream>
using namespace std;
int button[] = {10, 5, 1};
int abs(int n) {
if (n < 0)return -n;
return n;
}
int findCnt(int value) {
if (value == 0)return 0;
int min = 40, tmp = 0;
for (int i = 0; i < 3; i++) {
tmp = value - button[i];
if (min > abs(tmp)) min = abs(tmp);
}
return 1 + findCnt(min);
}
int main() {
int curT, objT;
cin >> curT >> objT;
cout << findCnt(abs(curT - objT));
return 0;
}
๋ฌธ์ ๋ฅผ ํ๊ณ ์ด๋ถ ์ ๋ถ์ ํด๋ต์ ์ฐพ์๋ณด๋๋ฐ, ์ด ๋ฌธ์ ๋ ๊ทธ๋ฆฌ๋, DP, ๋ฐฑํธ๋ํน ์ผ๋ก ํ์ ์๋ค๊ณ ๋ค ๋ง์ํ์ ๋ค.
'learnings > PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[PS/ํ์/BFS/DFS] ์ฌ๊ธฐ์ ๊ธฐ ์ด๊ณณ์ ๊ณณ ํ์ํ์ 2 (0) | 2021.07.19 |
---|---|
[PS/ํ์/BFS/DFS] ์ฌ๊ธฐ์ ๊ธฐ ์ด๊ณณ์ ๊ณณ ํ์ํ์ (0) | 2021.07.18 |
[PS/๊ทธ๋ฆฌ๋/ํ๋ก๊ทธ๋๋จธ์ค] ์ฒด์ก๋ณต (0) | 2021.07.02 |
[PS/์ฝ๋์ ] 1097 : ๋ฐ๋์ ์ญ์ ๋ค์ง๊ธฐ (0) | 2021.06.29 |
์ฝํ ๋ฉ๋ชจ (1) | 2021.05.28 |