-
[Programmers] Lv2. ํ๋ ์ฆ4๋ธ๋กSW Test/Programmers 2020. 4. 13. 22:36๋ฐ์ํ
- ์ด ๋ฌธ์ ๋ C++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค.
ํ์ด
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters#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; }
- ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด๋ ์์ ํ ๋ถ๋ถ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.
๋ฐ์ํ'SW Test > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] Lv3. ๋ฉ๋ฆฌ ๋ฐ๊ธฐ (0) 2020.05.03 [Programmers] Lv2. [1์ฐจ] ์บ์ (0) 2020.04.13 [Programmers] Lv2. ๋ด์ค ํด๋ฌ์คํฐ๋ง (0) 2020.04.13 [Programmers] Lv3.์ ์ธ (0) 2020.04.04 [Programmers] Lv3. ์ด์ค์ฐ์ ์์ํ (0) 2020.04.04