본문 바로가기
개발/Coding Test

[프로그래머스 C++ Lv2] 프렌즈4블록

by Eunduck 2022. 6. 7.
728x90

안녕하십니까. Eun🦆입니다.

풀이법 입니다.

 

 

코딩테스트 연습 - [1차] 프렌즈4블록

프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙

programmers.co.kr

#include <string>
#include <vector>
#include <stack>
using namespace std;
int solution(int m, int n, vector<string> board) {
    int answer = 0;
    stack<int> st;
    
    while(1)
    {
        for(int y=1;y<m;y++)
        {
            for(int x=1;x<n;x++)
            {
                if(board[y-1][x-1]==board[y-1][x] & board[y-1][x]==board[y][x-1] &
                    board[y][x-1]==board[y][x] & board[y][x] != '0')
                {
                    st.push(y);
                    st.push(x);
                    printf("find! y=%d, x=%d\n",y,x);
                }
            }
        }
        
        if(st.empty()==1)
            break;
        while(st.empty()==0)
        {
            int x = st.top();

            st.pop();
            int y = st.top();
            st.pop();
            
            if(board[y-1][x-1]!='0')
            {
                board[y-1][x-1] = '0';
                answer++;
            }
            if(board[y-1][x]!='0')
            {
                board[y-1][x] = '0';
                answer++;
            }
            if(board[y][x-1]!='0')
            {
                board[y][x-1] = '0';
                answer++;
            }
            if(board[y][x]!='0')
            {
                board[y][x] = '0';

               answer++;
            }
        }
        
        for(int x=0;x<n;x++)
        {
            for(int y=m-1;y>=0;y--)
            {
                if(board[y][x]=='0')
                {
                    for(int z=y-1;z>=0;z--)
                    {
                        if(board[z][x]!='0')
                        {
                            printf("board[%d][%d]<-board[%d][%d]\n",y,x,z,x);
                            board[y][x]=board[z][x];
                            board[z][x]='0';
                            break;
                        }
                    }

               }
            }
        }
    }
    return answer;
}

 

네이버 블로그 리뉴얼입니다.

(https://blog.naver.com/unsuk1/221959581945)

728x90

댓글