์ซ์์ผ๊ตฌ
์ฝ๋
#include <string>
#include <vector>
using namespace std;
bool check(int* arr, vector<int>& bb) {
int num = bb[0]; int s = bb[1]; int b = bb[2];
int n[3]; n[0] = num / 100; n[1] = (num - n[0] * 100) / 10; n[2] = (num - n[0] * 100 - n[1] * 10);
//strike check
int t_num = 0;
for (int i = 0; i < 3; i++) {
if (n[i] == arr[i])
t_num++;
}
if (t_num != s)
return false;
t_num = 0;
for (int i = 0; i < 3; i++) {
if (n[i] == arr[(i + 1) % 3] || n[i] == arr[(i + 2) % 3])
t_num++;
}
if (t_num != b)
return false;
return true;
}
int solution(vector<vector<int>> baseball) {
int answer = 0;
int size = baseball.size();
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
if (j == i)
continue;
for (int k = 1; k <= 9; k++) {
if (k == i || k == j)
continue;
int flag = 1;
int arr[3] = { i,j,k };
for (int l = 0; l < size; l++) {
if (!check(arr, baseball[l])) {
flag = 0;
break;
}
}
if (flag)
answer++;
}
}
}
return answer;
}
์๊ณ ๋ฆฌ์ฆ ์ค๋ช
- ์ธ ์๋ฆฌ ์๋ฅผ 1~9๊น์ง ์๋ก ๋ค๋ฅธ ์๋ก ์์ ํ์ํ๋ฉด์ check ํ ์๋ฅผ ๊ตฌํ๋ค.
- check ํ ์๋ฅผ ์ด๋ฏธ ์ฃผ์ด์ง baseball vector์ ๋ง๋์ง check ํ๋ค.
- strike ํ์๋ ๊ฐ์ ์์น์ ๊ฐ์ ์์๊ฐ ์๋์ง ํ์ธํ๋ค.
- ball ํ์๋ ๋ค๋ฅธ ์์น์ ๊ฐ์ ์์๊ฐ ์๋์ง ํ์ธํ๋ค.
์๊ฐ ๋ณต์ก๋
์ซ์๊ฐ 3์๋ฆฌ ์์ด๊ณ ๊ฐ ์๋ฆฌ๋ง๋ค 1~9๊น์ง ๋๋ฉด์ ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ checkํด์ผํ ์๋ 9*8*7 =504 ๊ฐ์ด๋ค. ํ ์๋ง๋ค baseball vector ๊ฐฏ์๋งํผ check๋ฅผ ํ๋๋ฐ, check ํจ์์ ์๊ฐ๋ณต์ก๋๊ฐ ์์์ด๋ฏ๋ก baseball vector์ ๊ฐฏ์๋ฅผ n์ผ๋ก ํ๋ฉด n๋งํผ์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
๋ฐ๋ผ์ ๊ฐ ์ซ์๋ง๋ค n๋งํผ์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฏ๋ก 504๊ฐ์ ์๋ฅผ checkํ๋๋ฐ์๋ 504n ๋งํผ์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
ํจ์
์ฒ์์ brute force ๋ฌธ์ ์ธ์ง ๊น๋จน๊ณ ์กฐ๊ฑด์ผ๋ก ํ์๋๋ฐ ๊ต์ฅํ ์ฝ๋๊ฐ ๋ณต์กํ๋ค. strike, ball ์ ์กฐ๊ฑด์ด ํด๋น ์์น์ ๊ทธ ์์๊ฐ ์กด์ฌํ๋ค๋ ์ ๋ณด๋ง์ ํฌํจํ๋ ๊ฒ์ด ์๋๋ผ ๋ค๋ฅธ ์์น์ ๊ทธ ์์๊ฐ ์กด์ฌํ๋ค๋ ์ ๋ณด๋ ํฌํจํด์ผํ๋ฏ๋ก ๊ณ ๋ คํด์ผํ ์ฌํญ์ด ๋๋ฌด ๋ง๋ค.
ex_) 123 1 1 ์ด๋ฉด
strike๊ฐ 1์ด๋๊น 1xx , x2x, xx3 ์ด ํ๋ณด๊ฐ ๋ ์ ์์ง๋ง, ์ด๋ฟ๋ง ์๋๋ผ ๋จ์ ๋ ์๋ฆฌ์ ํด๋น ์๊ฐ ๋ค์ด๊ฐ์ง ์๋๋ค๋ ์ ๋ณด๋ ํฌํจํด์ผํ๋ค. ๋ฐ๋ผ์ brute force๊ฐ ์ด๋ฅผ ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด ์ค ์ ์๋ค.
'Algorithm ๋ฌธ์ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[c++] ํ๋ก๊ทธ๋๋จธ์ค :: ํ (๋ฌธ์ ํ์ด, ์ฝ๋) (0) | 2020.07.26 |
---|---|
[c++] ํ๋ก๊ทธ๋๋จธ์ค :: ์นดํซ (brute force) (0) | 2020.05.28 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค :: ์์ ์ฐพ๊ธฐ (brute force) (0) | 2020.05.24 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค :: ๋ชจ์๊ณ ์ฌ (brute force) (0) | 2020.05.24 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค :: N์ผ๋ก ํํ (๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ) (0) | 2020.04.02 |
Comment