#include <string> #include <vector> #include <map> #include <iostream> #include <algorithm> using namespace std; int block[110][110][2]; int N; int insert(int x, int y, int type) { // 기둥 if(type == 0) { // 기둥은 바닥 위에 있거나 if(y == 0) { return 1; } // 보의 한쪽 끝 부분 위에 있거나 else if((x-1 >= 0 && block[x-1][y][1] == 1) || block[x][y][1] == 1) { return 1; } // 또는 다른 기둥 위에 있어야 합니다. else if(y-1 >= 0 && block[x][y-1][0] == 1) { return 1; } return 0; } // 보 else { // 보는 한쪽 끝 부분이 기둥 위에 있거나 if((y-1 >= 0 && block[x][y-1][0] == 1) || (x+1 <= N && y-1 >= 0 && block[x+1][y-1][0] == 1)) { return 1; } // 또는 양쪽 끝 부분이 다른 보와 동시에 연결되어 있어야 합니다. else if(x-1 >= 0 && x+1 <= N && block[x-1][y][1] == 1 && block[x+1][y][1] == 1) { return 1; } return 0; } } int erase() { for(int i = 0; i <= N; i++) { for(int j = 0; j <= N; j++) { for(int k = 0; k < 2; k++) { if(block[i][j][k] == 1) { block[i][j][k] = 0; if(insert(i, j, k) == 0) { block[i][j][k] = 1; return 0; } block[i][j][k] = 1; } } } } return 1; } vector<vector<int>> solution(int n, vector<vector<int>> build_frame) { vector<vector<int>> answer; N = n; for(int i = 0; i < build_frame.size(); i++) { int x = build_frame[i][0]; int y = build_frame[i][1]; // 기둥 if(build_frame[i][2] == 0) { // 설치 if(build_frame[i][3] == 1) { // 성공 if(insert(x, y, 0) == 1) { block[x][y][0] = 1; } } // 삭제 else { block[x][y][0] = 0; // 실패 if(erase() == 0) { block[x][y][0] = 1; } } } // 보 else if(build_frame[i][2] == 1) { // 설치 if(build_frame[i][3] == 1) { // 성공 if(insert(x, y, 1) == 1) { block[x][y][1] = 1; } } // 삭제 else { block[x][y][1] = 0; // 실패 if(erase() == 0) { block[x][y][1] = 1; } } } } for(int i = 0; i <= n; i++) { for(int j = 0; j <= n; j++) { for(int k = 0; k < 2; k++) { if(block[i][j][k] == 1) { vector<int> temp; temp.push_back(i); temp.push_back(j); temp.push_back(k); answer.push_back(temp); } } } } return answer; } | cs |
'Programmers > Level 3' 카테고리의 다른 글
[프로그래머스 3] 배달 (C/C++) (0) | 2020.03.09 |
---|---|
[프로그래머스 3] 자물쇠와 열쇠 (C/C++) (★★★) (0) | 2020.03.09 |
[프로그래머스 3] 거스름돈 (C/C++) (★) (0) | 2020.03.07 |
[프로그래머스 3] 보행자 천국 (C/C++) (0) | 2020.03.07 |
[프로그래머스 3] 가장 긴 팰린드롬 (C/C++) (★★) (0) | 2020.03.07 |