๊ด€๋ฆฌ ๋ฉ”๋‰ด

Tech Log ๐Ÿ› ๏ธ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] LEVEL2 ๊ฑฐ๋ฆฌ๋‘๊ธฐ ํ™•์ธํ•˜๊ธฐ (Java) ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] LEVEL2 ๊ฑฐ๋ฆฌ๋‘๊ธฐ ํ™•์ธํ•˜๊ธฐ (Java)

sehaan 2023. 5. 24. 22:10

 

๋ฌธ์ œ

 

๋ถ„์„

์‚ฌ์‹ค ์ด ๋ฌธ์ œ๋ฅผ ๊ต‰์žฅํžˆ ๋‹จ์ˆœ ๋ฌด์‹ํ•˜๊ฒŒ ํ’€์—ˆ๋‹ค.

 

๋Œ€๋žต ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ์š”์•ฝํ•˜๋ฉด

 

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;
        }
        
    
    }