ABOUT ME

์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์šฉ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹น~ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ๋Š” https://velog.io/@ows3090 ์— ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Today
Yesterday
Total
  • [Programmers] Lv2. ํ”„๋ Œ์ฆˆ4๋ธ”๋ก
    SW Test/Programmers 2020. 4. 13. 22:36
    ๋ฐ˜์‘ํ˜•
    • ์ด ๋ฌธ์ œ๋Š” C++๋กœ ํ’€์ด๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    ํ’€์ด

    #include <string>
    #include <vector>
    #include <queue>
    #include <utility>
    using namespace std;
    int dir[3][2]={{1,0},{0,1},{1,1}};
    // ์ขŒํ‘œ์•ˆ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜
    bool inside(int m,int n,int y,int x, vector<string>& board){
    char op=board[y][x];
    for(int i=0;i<3;i++){
    int dy=y+dir[i][0];
    int dx=x+dir[i][1];
    if(dy>=m || dx>=n || op!=board[dy][dx]){
    return false;
    }
    }
    return true;
    }
    // ํ•œ ์ขŒํ‘œ์”ฉ ํ™•์ธํ•˜์—ฌ bfs๋กœ ์ง€์›Œ์ง€๋Š” ์กฐ๊ฑด์ด ์žˆ๋Š”์ง€ ํ™•์ธ
    // ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋Š” ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š๋Š”๋‹ค
    // ํ•œ๋ฒˆ์ด๋ผ๋„ ์ง€์›Œ์ง„๋‹ค๋ฉด ๋‹ค์‹œ ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹คํ–‰
    int solution(int m, int n, vector<string> board) {
    int answer = 0;
    bool flag=true;
    // flag๋Š” ๋ณ€๋™์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ณ€์ˆ˜
    while(flag){
    flag=false; // flase๋กœ ํ•œ ํ›„ ๋ณ€๋™์ด ์žˆ์œผ๋ฉด true
    bool check[50][50]={0};
    bool change[50][50]={0};
    // bfs๋กœ ๋ฐฉ๋ฌธ, ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋Š” ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š๋Š”๋‹ค
    for(int i=0;i<m;i++){
    for(int j=0;j<n;j++){
    if(check[i][j]==0 && board[i][j]!='X'){
    queue<pair<int,int>> q;
    q.push(make_pair(i,j));
    bool find=false;
    while(!q.empty()){
    int ty=q.front().first;
    int tx=q.front().second;
    q.pop();
    check[ty][tx]=1;
    if(inside(m,n,ty,tx,board)){
    board[ty][tx]='X';
    if(change[ty][tx]==0){
    answer++;
    change[ty][tx]=1;
    }
    find=true;
    flag=true;
    for(int k=0;k<3;k++){
    q.push(make_pair(ty+dir[k][0],tx+dir[k][1]));
    }
    }
    if(find){
    board[ty][tx]='X';
    if(change[ty][tx]==0){
    answer++;
    change[ty][tx]=1;
    }
    }
    }
    }
    }
    }
    // X๋ฅผ ์•„๋ž˜๋กœ ๋‚ด๋ฆฌ๋Š” ์ž‘์—…
    for(int i=0;i<n;i++){
    string temp="";
    for(int j=0;j<m;j++){
    if(board[j][i]=='X'){
    temp=board[j][i]+temp;
    }
    else{
    temp+=board[j][i];
    }
    }
    for(int j=0;j<m;j++){
    board[j][i]=temp[j];
    }
    }
    }
    return answer;
    }

    • ์ถ”๊ฐ€๋กœ ๊ถ๊ธˆํ•œ ์ ์ด๋‚˜ ์ˆ˜์ •ํ•  ๋ถ€๋ถ„ ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.
    ๋ฐ˜์‘ํ˜•
Designed by Tistory.