https://www.acmicpc.net/problem/2210
๋ฌธ์
5×5 ํฌ๊ธฐ์ ์ซ์ํ์ด ์๋ค. ๊ฐ๊ฐ์ ์นธ์๋ ์ซ์(digit, 0๋ถํฐ 9๊น์ง)๊ฐ ์ ํ ์๋ค. ์ด ์ซ์ํ์ ์์์ ์์น์์ ์์ํด์, ์ธ์ ํด ์๋ ๋ค ๋ฐฉํฅ์ผ๋ก ๋ค์ฏ ๋ฒ ์ด๋ํ๋ฉด์, ๊ฐ ์นธ์ ์ ํ์๋ ์ซ์๋ฅผ ์ฐจ๋ก๋ก ๋ถ์ด๋ฉด 6์๋ฆฌ์ ์๊ฐ ๋๋ค. ์ด๋์ ํ ๋์๋ ํ ๋ฒ ๊ฑฐ์ณค๋ ์นธ์ ๋ค์ ๊ฑฐ์ณ๋ ๋๋ฉฐ, 0์ผ๋ก ์์ํ๋ 000123๊ณผ ๊ฐ์ ์๋ก ๋ง๋ค ์ ์๋ค.
์ซ์ํ์ด ์ฃผ์ด์ก์ ๋, ๋ง๋ค ์ ์๋ ์๋ก ๋ค๋ฅธ ์ฌ์ฏ ์๋ฆฌ์ ์๋ค์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
๋ค์ฏ ๊ฐ์ ์ค์ ๋ค์ฏ ๊ฐ์ ์ ์๋ก ์ซ์ํ์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ง๋ค ์ ์๋ ์๋ค์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int arr[5][5]; //์ฃผ์ด์ง ๋ฐฐ์ด
int move_ij[4][2] = {{0,-1}, {0,1}, {-1,0}, {1,0}}; //์์ง์ด๋ ์นธ์ ์๋ฅผ ์ ํด์ฃผ๋ ๋ฐฐ์ด
vector <int> v; //๋ง๋ค์ด์ง 6์๋ฆฌ ์๋ค์ ๋ฃ์ ๋ฒกํฐ
void move (int repeat_num, int i, int j, int num){ //์ธ์ ํ ์นธ์ผ๋ก ์ด๋ํ๋ ํจ์
if(repeat_num == 5){ //5๋ฒ๋ฐ๋ณตํ๋ฉด(=6์๋ฆฌ์๊ฐ ๋ง๋ค์ด์ง๋ฉด) ์๋ฅผ ๋ฒกํฐ์ ๋ฃ๊ณ ๋ฐ๋ณต ์ข
๋ฃ
v.push_back(num);
return;
}
for(int k=0; k<4; k++){
int moved_i = i + move_ij[k][0];
int moved_j = j + move_ij[k][1];
if(moved_i >= 0 && moved_j >= 0 && moved_i < 5 && moved_j < 5){
move(repeat_num + 1, moved_i, moved_j, num*10 + arr[moved_i][moved_j]);
}
}
}
int main() {
//๋ฐฐ์ด ์
๋ ฅ๋ฐ๊ธฐ
for(int i=0; i<5; i++){
for(int j=0; j<5; j++){
cin >> arr[i][j];
}
}
//์์์ ์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์
for(int i=0; i<5; i++){
for(int j=0; j<5; j++){
move(0, i, j, arr[i][j]);
}
}
//๋ฒกํฐ์์ ์ค๋ณต๋๋ ์ ์ ๋ฆฌ
sort(v.begin(), v.end());
v.erase(unique(v.begin(),v.end()), v.end());
//์ถ๋ ฅ
cout << v.size();
return 0;
}
'๐๏ธ ICPC Sinchon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 11931๋ฒ: ์ ์ ๋ ฌํ๊ธฐ 4 (0) | 2023.01.11 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 2751๋ฒ: ์ ์ ๋ ฌํ๊ธฐ 2 (0) | 2023.01.11 |
[C++][BOJ] ๋ฐฑ์ค 21316๋ฒ: ์คํผ์นด (0) | 2021.08.11 |
[C++] ๋ฐฑ์ค 1448๋ฒ: ์ผ๊ฐํ ๋ง๋ค๊ธฐ (0) | 2021.07.26 |
[์๊ฐ์ด๊ณผ][C++] ๋ฐฑ์ค 10825๋ฒ : ๊ตญ์์ (0) | 2021.07.23 |