๋ฌธ์ ๋งํฌ
13392๋ฒ: ๋ฐฉ๋ฒ์ ์ถ๋ ฅํ์ง ์๋ ์ซ์ ๋ง์ถ๊ธฐ (acmicpc.net)
13392๋ฒ: ๋ฐฉ๋ฒ์ ์ถ๋ ฅํ์ง ์๋ ์ซ์ ๋ง์ถ๊ธฐ
์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด N๊ฐ์ ํ์ ์ด ๊ฐ๋ฅํ ์ซ์ ๋์ฌ๊ฐ ์๋์๋ก ์ฐ๊ฒฐ๋์ด ์๋ค. ๊ฐ์ฅ ์์ ์๋ ์ซ์๋์ฌ๋ ์ซ์๋์ฌ 1์ด๊ณ ๊ฐ์ฅ ์๋์ ์๋ ์ซ์๋์ฌ๋ ์ซ์๋์ฌ N์ด๋ค. ๋ชจ๋ ์ซ์๋์ฌ๋ ๊ฐ๊ฐ 10
www.acmicpc.net
DP ๋ฌธ์ ๋ก ๊ณจ๋2๋ผ๊ณ ๋์ด์์ง๋ง ๋ด ์ฒด๊ฐ์์ผ๋ก ์ ์ ํ์๋ ๊ณจ๋1 ๋ก๋ด ์กฐ์ข ํ๊ธฐ๋ณด๋ค ์ด๋ ค์ด ๊ฒ ๊ฐ๋ค.
์ค๋ต
์ฒ์์๋ DP๋ฐฐ์ด์ 2์ฐจ์๋ฐฐ์ด๋ก ๋ง๋ค์ด์ ์๊ฐํ๋ค.
DP[๋๋ฆฌ๊ณ ์๋ ๋์ฌ ๋ฒํธ][์ผ์ชฝ์ผ๋ก ๋๋ฆด์ง ์ค๋ฅธ์ชฝ์ผ๋ก ๋๋ฆด์ง] ์ด๋ ๊ฒ ์๊ฐํ๋ค.
์ด์ ์ ์ผ์ชฝ์ผ๋ก ๋๋ ค์ ๋ง๋ค์ด์ง ํ์ฌ ๋ณด๊ณ ์๋ ์๋ฉด์ด ์์ ๊ฒ์ด๊ณ , ์ค๋ฅธ์ชฝ์ผ๋ก ๋๋ ค์ ๋ง๋ค์ด์ง
ํ์ฌ ๋ณด๊ณ ์๋ ์๋ฉด์ด ์์ ๊ฒ์ด๋ค.
1. ์ผ์ชฝ์ผ๋ก ๋๋ฆด๊ฑฐ๋ผ๊ณ ํ์ ๋, ์ด์ ์ ์ผ์ชฝ์ผ๋ก ๋๋ ค์ ๋ง๋ค์ด์ง ๋ฉด์ด ์๊ณ ์ค๋ฅธ์ชฝ์ผ๋ก ๋๋ ค์ ๋ง๋ค์ด์ง ๋ฉด์ด ์๋ค.
์ผ์ชฝ์ผ๋ก ๋๋ ค์ ๋ง๋ค์ด์ง ๋ฉด์์ ์ผ์ชฝ์ผ๋ก ๋๋ ค ์ํ๋ ์ซ์๋ฅผ ๋ง๋ ๋ค. ์ค๋ฅธ์ชฝ์ผ๋ก ๋๋ ค์ ๋ง๋ค์ด์ง ๋ฉด์์ ์ผ์ชฝ์ผ๋ก ๋๋ ค ์ํ๋ ์ซ์๋ฅผ ๋ง๋ ๋ค. ์ด ๋ ๊ฐ์ง ๊ฒฝ์ฐ์ค ๋๋ฆฐ ์ด ํ์๊ฐ ์ ์ ๊ฒฝ์ฐ๋ฅผ ํํ๋ ๋ฐฉ์์ ์ ํํ๋๋ฐ, ์ด๋ ๊ฒ ํ ๊ฒฝ์ฐ ๋ง์ฝ ๋ ๊ฐ์ง ๊ฒฝ์ฐ์ ์ด ํ์๊ฐ ๊ฐ๋ค๋ฉด ์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ๊ทธ๋์ ์ด ๋ฐฉ๋ฒ์ ์๋์ ๊นจ๋ฌ์๋ค.
๋ช์๊ฐ์ ๊ณ ๋ฏผํ์ง๋ง ๋์ ํ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ์ด์ ๋ค๋ฅธ ๋ถ๋ค์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ๋ค. ์ฐธ๊ณ ํ๋ฉด์ ์ดํดํ๋ ค๊ณ ํด๋ ์ดํด๊ฐ ์ฝ์ง์์ ๋ฌธ์ ์๋ค.
์ฐธ๊ณ ๋งํฌ
https://kimcodingvv.github.io/BOJ-13392/
[BOJ | ๋ฐฑ์ค] 13392๋ฒ: ๋ฐฉ๋ฒ์ ์ถ๋ ฅํ์ง ์๋ ์ซ์ ๋ง์ถ๊ธฐ
BOJ 13392 ๋ฐฉ๋ฒ์ ์ถ๋ ฅํ์ง ์๋ ์ซ์ ๋ง์ถ๊ธฐ
kimcodingvv.github.io
๊ทธ ์ค์์ ๊ฐ์ฅ ์ดํดํ๊ธฐ ์ฌ์ ๋ ๊น์ฝ๋ฉ๋์ ์ฝ๋๋ก ์ดํดํด๋ณด๋ คํ๋ค.
ํ์ด
๋จผ์ i๋ฒ์งธ ๋์ฌ๋ฅผ ๋๋ฆฌ๋ ค ํ๋ค๊ณ ๊ฐ์ ํ์๋ i-1๋ฒ์งธ๊น์ง ์ผ์ชฝ์ผ๋ก ๋ช ๋ฒ ๋๋ ธ๋๊ฐ i๋ฒ์งธ ๋์ฌ์ ์ซ์๊ฐ ๋ฌด์์ธ์ง์ ์ํฅ์ ๋ฏธ์น๋ค. ์ค๋ฅธ์ชฝ์ผ๋ก๋ ์ด์ ์ ๋ช๋ฒ์ ๋๋ ธ๋ i๋ฒ์งธ ์ซ์๋ ๋ฐ๋์ง ์๋๋ค. ์ผ์ชฝ์ผ๋ก 12๋ฒ์ ๋๋ฆฐ ๊ฒ์ด๋ ์ผ์ชฝ์ผ๋ก 2๋ฒ ๋๋ฆฐ ๊ฒ์ ๊ฒฐ๊ตญ ๊ฐ์ ์ซ์์ด๋ฏ๋ก ๋ชจ๋๋ฌ๋ฅผ ์ด์ฉํด %10์ ํด์ค๋ค.
i๋ฒ์งธ ๋์ฌ๋ฅผ ์ํ๋ ์ซ์๋ก ๋ง๋ค๊ธฐ ์ํด์๋
์ผ์ชฝ์ผ๋ก (๋ง๋ค์ด์ผ ํ ์ซ์ - ํ์ฌ i๋ฒ์งธ ๋์ฌ์ ์ซ์ - ์ ์ ์ผ์ชฝ์ผ๋ก ๋๋ฆฐ ํ์ + 20) % 10 ๋งํผ ๋๋ ค์ผํ๋ค.
+20์ ํด์ฃผ๋ ์ด์ ๋ ๋ง๋ค์ด์ผ ํ ์ซ์๊ฐ 0์ด๊ณ i๋ฒ์งธ ๋์ฌ๊ฐ 9๋ผ๋ฉด +10๋ง ํ๋ฉด ์์๊ฐ ๋ ์๋์๊ธฐ ๋๋ฌธ์ +20์ ํด์ ์์๋ก ๋ง๋ค์ด ์ค๋ค.
์ผ์ชฝ์ผ๋ก ๋๋ ค์ผ ํ๋ ํ์๋ฅผ left ๋ผ๊ณ ํ๋ฉด ์ค๋ฅธ์ชฝ์ผ๋ก๋ 10-left ๋งํผ ๋๋ฆฌ๋ฉด ์ํ๋ ์ซ์๋ฅผ ๋ง๋ค ์ ์๋ค.
1. ์ผ์ชฝ์ผ๋ก ๋๋ฆฌ๋ ๊ฒฝ์ฐ DP[i][(j+left) %10)] = min(DP[i][(j+left)%10], DP[i-1][j] + left) ์ด๋ค.
์ผ์ชฝ์ผ๋ก ๋๋ฆฐ ์ด ํ์๊ฐ j์์ j+left๋ก ๋ฐ๋์๋ค.
2. ์ค๋ฅธ์ชฝ์ผ๋ก ๋๋ฆฌ๋ ๊ฒฝ์ฐ DP[i][j] = min(DP[i][j], DP[i-1][j] + right) ์ด๋ค.
์ผ์ชฝ์ผ๋ก ๋๋ฆฐ ์ด ํ์๋ ๋ณํ์ง ์๋๋ค.
์ด๋ ๊ฒ ํด์ ๋ง์ง๋ง์
DP[N][0~9] ์ค ๊ฐ์ฅ ์์ ๊ฐ์ ์ถ๋ ฅํ๋ฉด ๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <string.h>
#include <string>
#include <stack>
#include <vector>
#include <math.h>
#include <queue>
#include <climits>
#include <algorithm>
#include <iomanip>
#include <map>
#define mod 1000000007
#define Floor 1000000000000000000
using namespace std;
typedef long long ll;
typedef priority_queue<pair<pair<int, int>, int>, vector<pair<pair<int, int>, int>>, greater<pair<pair<int, int>, int>>> Priority_queue;
const int INF = INT_MAX;
const int MAX_N = 10000 + 5;
int N;
vector<int> num;
vector<int> goal;
int DP[MAX_N][10];
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> N;
char ch;
for (int i = 1; i <= N; i++) {
for (int j = 0; j <= 9; j++)
DP[i][j] = INF;
}
num.push_back(0);
for (int i = 0; i < N; i++) {
cin >> ch;
num.push_back(ch - '0');
}
goal.push_back(0);
for (int i = 0; i < N; i++) {
cin >> ch;
goal.push_back(ch - '0');
}
for (int i = 0; i <= 9; i++) {
DP[0][i] = i;
}
for (int i = 1; i <= N; i++) {
for (int j = 0; j <= 9; j++) {
int left = (goal[i] - num[i] - j + 20) % 10;
int right = 10 - left;
DP[i][j] = min(DP[i][j], DP[i - 1][j] + right);
DP[i][(j + left) % 10] = min(DP[i][(j + left) % 10], DP[i - 1][j] + left);
}
}
int ans = INF;
for (int i = 0; i <= 9; i++) {
ans = min(ans, DP[N][i]);
}
cout << ans << "\n";
return 0;
}
|
cs |
๋ ผ๋ฆฌ๋ ๋ชจ๋ ์ดํดํ์ง๋ง, ์ฒ์์ DP[0][i] ๊ฐ์ ์ i๋ก ์ด๊ธฐํ ์์ผ์ฃผ๋์ง๋ ์์ง ์ดํด๊ฐ ์๋๋ค.
DP์ ์กฐ๊ธ ์์ ์์ด ์ง๋ คํ์ง๋ง ์์ง ๋ฉ์๋ค๋ ๊ฑธ ๋ค์ ๋๊ผ๋ค.
'๋ฐฑ์ค > Gold' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 1937 : ์์ฌ์์ด ํ๋ค (0) | 2022.03.01 |
---|---|
[BOJ] 2133 : ํ์ผ ์ฑ์ฐ๊ธฐ (0) | 2022.03.01 |
[BOJ] 2169 : ๋ก๋ด ์กฐ์ข ํ๊ธฐ (0) | 2022.02.24 |
[BOJ] 1509 : ํฐ๋ฆฐ๋๋กฌ ๋ถํ (0) | 2022.02.24 |
[BOJ] 13460 : ๊ตฌ์ฌ ํ์ถ 2 (0) | 2022.02.22 |