๋ฌธ์
์ฝ๋
#include <iostream>
using namespace std;
int map[51][51];
int r, c, d, N, M; // d0 ๋ถ์ชฝ, d1 ๋์ชฝ, d2 ๋จ์ชฝ, d3 ์์ชฝ
int clean_cnt = 1;
int isclean[51][51];
bool flag = false;
bool clean(){ // ์ผ์ชฝ ๋ฐฉํฅ์ ์ฒญ์ํ ๊ณต๊ฐ์ด ์๋์ง ํ์ธ
int left_r = r, left_c = c; //์ผ์ชฝ ๋ฐฉํฅ์ ์ฒญ์ํ ๊ณต๊ฐ์ ์ขํ
if(d == 0) left_c--;
if(d == 1) left_r--;
if(d == 2) left_c++;
if(d == 3) left_r++;
if((isclean[r-1][c] || map[r-1][c]) && (isclean[r][c-1] || map[r][c-1]) && (isclean[r+1][c] || map[r+1][c]) && (isclean[r][c+1] || map[r][c+1])) { // ๋ค ๋ฐฉํฅ ๋ชจ๋ ์ฒญ์๊ฐ ๋์ด์๊ฑฐ๋ ๋ฐฉํฅ ๋ชจ๋ ๋ฒฝ์ผ ๊ฒฝ์ฐ
switch (d) {
case 0:
if(map[r+1][c]) flag = true; // ๋ค์ชฝ ๋ฐฉํฅ์ด ๋ฒฝ์ด๋ผ ํ์ง๋ ํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์๋์ ๋ฉ์ถ๋ค.
else r+=1; // ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ์ ์งํ ์ฑ๋ก ํ ์นธ ํ์ง์ ํ๊ณ 2๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
return false;
case 1:
if(map[r][c-1]) flag = true; // ๋ค์ชฝ ๋ฐฉํฅ์ด ๋ฒฝ์ด๋ผ ํ์ง๋ ํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์๋์ ๋ฉ์ถ๋ค.
else c-=1; // ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ์ ์งํ ์ฑ๋ก ํ ์นธ ํ์ง์ ํ๊ณ 2๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
return false;
case 2:
if(map[r-1][c]) flag = true; // ๋ค์ชฝ ๋ฐฉํฅ์ด ๋ฒฝ์ด๋ผ ํ์ง๋ ํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์๋์ ๋ฉ์ถ๋ค.
else r-=1; // ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ์ ์งํ ์ฑ๋ก ํ ์นธ ํ์ง์ ํ๊ณ 2๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
return false;
case 3:
if(map[r][c+1]) flag = true; // ๋ค์ชฝ ๋ฐฉํฅ์ด ๋ฒฝ์ด๋ผ ํ์ง๋ ํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์๋์ ๋ฉ์ถ๋ค.
else c+=1; // ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ์ ์งํ ์ฑ๋ก ํ ์นธ ํ์ง์ ํ๊ณ 2๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
return false;
}
}
else if(!isclean[left_r][left_c] && !map[left_r][left_c]){ // ์ผ์ชฝ ๋ฐฉํฅ์ ์์ง ์ฒญ์ํ์ง ์์ ๊ณต๊ฐ์ด ์กด์ฌํ๋ค๋ฉด, ๊ทธ ๋ฐฉํฅ์ผ๋ก ํ์ ํ ๋ค์ ํ ์นธ์ ์ ์งํ๊ณ 1๋ฒ๋ถํฐ ์งํํ๋ค.
d = (d+3) % 4;
r = left_r;
c = left_c;
return true;
}
d = (d+3) % 4; // ์ผ์ชฝ ๋ฐฉํฅ์ ์ฒญ์ํ ๊ณต๊ฐ์ด ์๋ค๋ฉด, ๊ทธ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ณ 2๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
return false;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>N>>M;
cin>>r>>c>>d;
for(int i=0; i<N; i++){
for(int k=0; k<M; k++){
cin>>map[i][k];
}
}
isclean[r][c] = 1;
while(true){
if(flag || r<0 || r>=N || c<0 || c>=M) break; //๋ฒ์ ์์ ๋ค์ง ์๊ฑฐ๋, ์ข
๋ฃ ์กฐ๊ฑด์ ๋ง์กฑ ํ์ ๊ฒฝ์ฐ ์ค๋จ
if(clean()){
clean_cnt++;
isclean[r][c] = 1; // ํ์ฌ ์์น๋ฅผ ์ฒญ์ํ๋ค.
}
}
cout<<clean_cnt;
}
ํ์ด
ํ ๋ ํ ๋ ํ์ด์ผ ํ๋ ๋ฌธ์ .. ๊ท์ฐฎ์ง๋ง ํ๋ฉด ์ฑ์ทจ๊ฐ์ด ์๋นํ ๋ฌธ์ ... ๊ทธ๊ฒ์ด ๋ฐ๋ก ์๋ฎฌ๋ ์ด์
๋ก๋ด ์ฒญ์๊ธฐ์ ์๋์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํ์ฌ ์์น๋ฅผ ์ฒญ์ํ๋ค.
- ํ์ฌ ์์น์์ ํ์ฌ ๋ฐฉํฅ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ๋ฐฉํฅ๋ถํฐ ์ฐจ๋ก๋๋ก ํ์์ ์งํํ๋ค.
- ์ผ์ชฝ ๋ฐฉํฅ์ ์์ง ์ฒญ์ํ์ง ์์ ๊ณต๊ฐ์ด ์กด์ฌํ๋ค๋ฉด, ๊ทธ ๋ฐฉํฅ์ผ๋ก ํ์ ํ ๋ค์ ํ ์นธ์ ์ ์งํ๊ณ 1๋ฒ๋ถํฐ ์งํํ๋ค.
- ์ผ์ชฝ ๋ฐฉํฅ์ ์ฒญ์ํ ๊ณต๊ฐ์ด ์๋ค๋ฉด, ๊ทธ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ณ 2๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
- ๋ค ๋ฐฉํฅ ๋ชจ๋ ์ฒญ์๊ฐ ์ด๋ฏธ ๋์ด์๊ฑฐ๋ ๋ฒฝ์ธ ๊ฒฝ์ฐ์๋, ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ์ ์งํ ์ฑ๋ก ํ ์นธ ํ์ง์ ํ๊ณ 2๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
- ๋ค ๋ฐฉํฅ ๋ชจ๋ ์ฒญ์๊ฐ ์ด๋ฏธ ๋์ด์๊ฑฐ๋ ๋ฒฝ์ด๋ฉด์, ๋ค์ชฝ ๋ฐฉํฅ์ด ๋ฒฝ์ด๋ผ ํ์ง๋ ํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์๋์ ๋ฉ์ถ๋ค.
๋ก๋ด ์ฒญ์๊ธฐ๋ ํ์ฌ ๋ฐฉํฅ์ ํญ์ ์๊ณ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก 90๋ ํ์ ํด์ผ ํ๋๋ฐ, ๊ทธ ๋ฐฉํฅ์ด๋ผ๋ ๋ง์ด ๋ชจํธํด์ ์ฒ์์ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ค๊ฐ ์๊ฐ์ ๋ง์ด ์๋ชจํ์ต๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 15686๋ฒ - ์นํจ ๋ฐฐ๋ฌ (0) | 2022.08.26 |
---|---|
[๋ฐฑ์ค,c++] 16234๋ฒ - ์ธ๊ตฌ ์ด๋ (0) | 2022.08.25 |
[๋ฐฑ์ค,c++] 17135๋ฒ - ์บ์ฌ๋ํ์ค (2) | 2022.08.25 |
[๋ฐฑ์ค,c++] 20955๋ฒ - ๋ฏผ์์ ์๊ธ ์์ (0) | 2022.08.23 |
[๋ฐฑ์ค,c++] 18429๋ฒ - ๊ทผ์์ค (0) | 2022.08.23 |
[๋ฐฑ์ค,c++] 15658๋ฒ - ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (2) (0) | 2022.08.23 |
๋๊ธ