PS

SWEA 2819 - 격자판의 숫자 이어 붙이기

728x90

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7I5fgqEogDFAXB&categoryId=AV7I5fgqEogDFAXB&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

- c++

 

#include <cstring>
#include <iostream>
 
#define endl "\n"
 
using namespace std;
 
int cnt, T;
int result[10000000];
int adj[4][4];
 
void dfs(int y, int x, int num, int depth) {
    if (depth == 7) {
        result[num] = 1;
        return;
    }
    
    num *= 10;
    num += adj[y][x];
    
    if (y - 1 >= 0) dfs(y - 1, x, num, depth + 1); // N
    if (y + 1 < 4) dfs(y + 1, x, num, depth + 1);  // S
    if (x - 1 >= 0) dfs(y, x - 1, num, depth + 1); // W
    if (x + 1 < 4) dfs(y, x + 1, num, depth + 1);  // E
}
 
int main(int argc, char** argv) {
    
    cin>>T;
    for(int tc = 1; tc <= T; ++tc) {
        cnt = 0;
        memset(result, 0sizeof(result));
        memset(adj, 0sizeof(adj));
        
        for (int i = 0; i < 4++i)
            for (int j = 0; j < 4++j)
                cin >> adj[i][j];
        
        for (int i = 0; i < 4++i) 
            for (int j = 0; j < 4++j) 
                dfs(i, j, 00);
        
        for (int i = 0; i < 10000000++i) {
            if (result[i] != 0) cnt++;
        }
        
        cout << "#" << tc << " " << cnt << endl;    
    }
    
    return 0;
}
cs

 

 

 

728x90

'PS' 카테고리의 다른 글

프로그래머스 - 이중 우선순위 큐  (0) 2020.11.23
프로그래머스 - 더 맵게  (0) 2020.11.23
SWEA 1206 - View  (0) 2020.11.21
프로그래머스 - 조이스틱  (0) 2020.11.20
프로그래머스 - 큰 수 만들기  (0) 2020.11.19