새소식

코딩테스트/코드트리

[코드트리 챌린지] 격자 위의 편안한 상태

  • -

[문제]

https://www.codetree.ai/cote/13/problems/comfortable-state-on-the-grid?&utm_source=clipboard&utm_medium=text 

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

[문제 풀이]

n * n 배열에 m개의 주문이 들어와 해당 좌표에 순서대로 색칠을 할때 주변에 색칠된칸이 3개인 칸이 몇개가 있느냐를 찾는 문제이다.

 

나의 경우에는 하나의 함수를 만들어서 4개의 방향을 돌면서 해당 결과가 맞는지 아닌지 bool 값을 return 하게 해주었다.

bool colorCozy(int x, int y){
    int answer = 0;
    for(int i = 0;i<4;i++){
        int nextX = x + dx[i];
        int nextY = y + dy[i];
        if(arr[nextX][nextY] == 1){
            answer++;
        }
    }
    return (answer == 3) ? true : false;
}

 

[회고]

어려운 문제는 아니었지만 정확히 색깔이 3개여야 하는데 3이상으로 문제를 잘못봐서 틀렸다. 문제를 읽을때는 언제나 주의하자.

[코드]

#include <iostream>
#include <vector>
#define endl "\n"

using namespace std;

int n,m;
int arr[102][102];
int dx[4] = {1,0,-1,0};
int dy[4] = {0,1,0,-1};

bool colorCozy(int x, int y){
    int answer = 0;
    for(int i = 0;i<4;i++){
        int nextX = x + dx[i];
        int nextY = y + dy[i];
        if(arr[nextX][nextY] == 1){
            answer++;
        }
    }
    return (answer == 3) ? true : false;
}

int main() {
    cin>>n>>m;
    for(int i = 0;i<m;i++){
        int r,c;
        cin>>r>>c;
        arr[r][c] = 1;
        colorCozy(r,c) ? cout<<"1"<<endl : cout<< "0" <<endl;
    }
    return 0;
}

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.