https://www.welcomekakao.com/learn/challenges?tab=all_challenges
#include <iostream>
#include <string>
#include <cstring>
#include <vector>
using namespace std;
int arr[80][80];
int copyKey[20][20];
int temp[80][80];
int Key[20][20];
void rotate(int M){
for(int i=0;i<M;i++){
for(int j=0;j<M;j++){
copyKey[i][j]=Key[M-1-j][i];
}
}
memcpy(Key,copyKey,sizeof(Key));
}
bool chking(int M, int N){
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
if(temp[M-1+i][M-1+j]==2||temp[M-1+i][M-1+j]==0){
return false;
}
}
}
return true;
}
bool solution(vector<vector<int>> key, vector<vector<int>> lock) {
bool answer = false;
int M = key.size();
int N = lock.size();
int c=4;
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
arr[M-1+i][M-1+j]=lock[i][j];
}
}
for(int i=0;i<M;i++){
for(int j=0;j<M;j++){
Key[i][j]=key[i][j];
}
}
while(c--&&!answer){
//temp에 돌려가면서 key 복사
rotate(M);
for(int i=0;i<2*N+M-2;i++){
for(int j=0;j<2*N+M-2;j++){
memcpy(temp,arr,sizeof(temp));
for(int k=0;k<N;k++){
for(int l=0;l<N;l++){
temp[i+k][j+l]+=Key[k][l];
}
}
answer = chking(M,N);
if(answer) break;
}
if(answer) break;
}
}
return answer;
}
'개발자 > algorithm' 카테고리의 다른 글
백준 18227번 : 성대나라의 물탱크 (c++) (0) | 2020.08.28 |
---|---|
2019 카카오 코딩테스트 2번 : 실패율 (c++) (0) | 2020.08.25 |
2020 카카오 코딩테스트 1번 : 문자열 압축 (c++) (0) | 2020.08.24 |
백준 1102번 : 발전소 (c++) (0) | 2020.08.21 |
백준 2098번 : 외판원 순회 (c++) (0) | 2020.08.21 |