๋ฌธ์
๋ถ์
์ฌ์ค ์ด ๋ฌธ์ ๋ฅผ ๊ต์ฅํ ๋จ์ ๋ฌด์ํ๊ฒ ํ์๋ค.
๋๋ต ๋ฌธ์ ์ ์กฐ๊ฑด์ ์์ฝํ๋ฉด
1. ์ค๊ฐ์ ํํฐ์ (X)์ด ์กด์ฌํ๋ค๋ฉด ๊ฑฐ๋ฆฌ ๋๊ธฐ๋ฅผ ์งํจ ๊ฒ์ด๋ค.
2. ํํฐ์ ์ ์ฌ์ด์ ๋๊ณ ์์ ๊ฒฝ์ฐ๋ ๊ฑฐ๋ฆฌ ๋๊ธฐ๋ฅผ ์งํจ๊ฒ์ด๋ค. (์์ ๋น ํ ์ด๋ธ์ด ์์ผ๋ฉด ์๋จ)
์ผ๋ก ์์ฝ ๊ฐ๋ฅํ๋ค.
์๊ฐํด๋ณด๋ฉด,
1๋ฒ ์กฐ๊ฑด์ ํํฐ์ ์ด ๋์ค๋ฉด ํด๋น ๋ผ์ธ์ ๋ ์ด์ ํ์ํ ํ์๊ฐ ์๋ ๊ฒ์ด๋ค.
2๋ฒ ์กฐ๊ฑด์์๋ P(์ฐธ๊ฐ์) ์์ ๊ณต์(O)์ด ์์ผ๋ฉด ์๋๋ค.
๋ผ๊ณ ํด์ํ ์ ์๋ค.
์ด์ ์๊ณ ๋ฆฌ์ฆ์ ์ง๋ณด์
ํ์์ ํ ๋๋ ์ธ๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์๋ค.
1. ํํฐ์ (X)์ด ๋์ค๋ ๊ฒฝ์ฐ
- ๋ ์ด์ ๋ณผ ํ์ ์์ skip
2. ์ฐธ๊ฐ์(P)๊ฐ ๋์ค๋ ๊ฒฝ์ฐ
- ๋ฌด์กฐ๊ฑด ์๋จ
3. ๊ณต์(O)์ด ๋์ค๋ ๊ฒฝ์ฐ
- ์ด๊ฑด ์ข ๋ ํ์ํ ํ์๊ฐ ์๋ค.
์ฃผ๋ณ์ ์ฐธ๊ฐ์(P) ๊ฐ ์๋ ์ง ํ์ธํด ๋ณด์
์ด๋ฐ ๋ฉ์ปค๋์ฆ์ผ๋ก ํ๋ฉด ๋ฌธ์ ๋ฅผ ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ ์ ์๋ค.
๊ทผ๋ฐ ๋ ์ํ์ข์ฐ ๋๊ฐ์ ๊น์ง ์ผ์ผ์ด ํ์ํด์ฃผ์๋ค ใ ใ ...
์ฝ๋
import java.util.*;
class Solution {
static int[] dx = {1,2,-1,-2,0,0,0,0,-1,-1,1,1};
static int[] dy = {0,0,0,0,1,2,-1,-2,-1,1,-1,1};
static List<Integer> answer_ = new ArrayList<>();
public int[] solution(String[][] places) {
int[] answer = new int[5];
for(int i=0;i<5;i++){
visit(places[i]);
if(visit(places[i]) == true){
answer_.add(1);
}
else {
answer_.add(0);
}
}
for(int i=0;i<5;i++){
answer[i] = answer_.get(i);
}
return answer;
}
static boolean visit(String[] places){
for(int j=0;j<5;j++){
for(int k=0;k<5;k++){
if(places[j].charAt(k) == 'P'){
check(j,k,places);
if(check(j,k,places) == false){
return false;
}
}
}
}
return true;
}
static boolean check(int y,int x,String[] places){
for(int i=0;i<=7;i++){
if(y+dy[i] < 0 || y+dy[i] > 4 || x+dx[i] < 0 || x+dx[i] > 4) break;
if(places[y+dy[i]].charAt(x+dx[i]) == 'X') break;
if(places[y+dy[i]].charAt(x+dx[i]) == 'P') return false;
}
for(int i=2;i<=3;i++){
if(y+dy[i] < 0 || y+dy[i] > 4 || x+dx[i] < 0 || x+dx[i] > 4) break;
if(places[y+dy[i]].charAt(x+dx[i]) == 'X') break;
if(places[y+dy[i]].charAt(x+dx[i]) == 'P') return false;
}
for(int i=4;i<=5;i++){
if(y+dy[i] < 0 || y+dy[i] > 4 || x+dx[i] < 0 || x+dx[i] > 4) break;
if(places[y+dy[i]].charAt(x+dx[i]) == 'X') break;
if(places[y+dy[i]].charAt(x+dx[i]) == 'P') return false;
}
for(int i=6;i<=7;i++){
if(y+dy[i] < 0 || y+dy[i] > 4 || x+dx[i] < 0 || x+dx[i] > 4) break;
if(places[y+dy[i]].charAt(x+dx[i]) == 'X') break;
if(places[y+dy[i]].charAt(x+dx[i]) == 'P') return false;
}
for(int i=8;i<=11;i++){
if(y+dy[i] < 0 || y+dy[i] > 4 || x+dx[i] < 0 || x+dx[i] > 4) continue;
if(places[y+dy[i]].charAt(x+dx[i]) == 'X' || places[y+dy[i]].charAt(x+dx[i]) == 'O')
continue;
if(places[y+dy[i]].charAt(x+dx[i]) == 'P'){
if(places[y+dy[i]].charAt(x) == 'X' && places[y].charAt(x+dx[i]) == 'X') {
continue;
}
else return false;
}
}
return true;
}
}
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ด๋ ? (ํ๋ก๊ทธ๋๋จธ์ค - ์ฐ์๋ ๋ถ๋ถ ์์ด์ ํฉ) (3) | 2023.05.10 |
---|---|
์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด๋? (0) | 2023.04.23 |
[๋ฐฑ์ค] 14889๋ฒ ์คํํธ์ ๋งํฌ ์๋ฐ(๋ฐฑํธ๋ํน , ๋นํธ๋ง์คํน) (0) | 2023.03.28 |
[๋ฐฑ์ค] 1991๋ฒ ํธ๋ฆฌ์ํ JAVA (0) | 2023.03.26 |
[๋ฐฑ์ค] 11723 ์งํฉ JAVA (2) | 2023.03.23 |