์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/JAVA

[JAVA] 2018 KAKAO BLIND RECRUITMENTใ€ํ”„๋žœ์ฆˆ4๋ธ”๋กใ€‘

2023. 4. 20. 17:57

 

์ฝ”๋“œ๋Ÿ‰ ์‹คํ™”์ธ๊ฐ€ใ…‹ใ…‹ใ…‹

 

๋ญ”๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค๋Š” ๋А๋‚Œ๋ณด๋‹ค๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ํ•˜๋‚˜ ๋งŒ๋“  ๋А๋‚Œ์ด๋‹ค.

 

๋ฌธ์ œ ์ž์ฒด๋Š” ์‰ฌ์› ๊ณ , ๊ฐ€์žฅ ํ—ท๊ฐˆ๋ ธ๋˜ ๋ถ€๋ถ„์€ ๋ธ”๋ก์„ ์ œ๊ฑฐํ•˜๊ณ  ์˜ฎ๊ธฐ๋Š” ๋ถ€๋ถ„์ด์—ˆ๋‹ค.

 

์ด๋ถ€๋ถ„์€, StringBuilder๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๊ฒฐํ–ˆ๋Š”๋ฐ, ๋‚˜๋Š” ์ œ๊ฑฐํ•œ ๋ธ”๋ก์„ "0"์œผ๋กœ ๊ธฐ๋กํ•ด๋†“์•˜์—ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ, ์œ„์™€ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ, ์ฒซ๋ฒˆ์งธ ์—ด์„ ์ถœ๋ ฅํ•˜๋ฉด, TTT00T ์™€ ๊ฐ™์ด ์ถœ๋ ฅ๋œ๋‹ค.

๋”ฐ๋ผ์„œ, 0์ด ์•„๋‹Œ๊ฒฝ์šฐ์—๋งŒ StringBuilder์— ํ•ฉ์ณ์ฃผ๋ฉด, TTTT ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ–‰์˜ ๊ฐฏ์ˆ˜๊ฐ€ ์ผ์น˜ํ•ด์•ผํ•˜๋ฏ€๋กœ ํ–‰์˜ ๊ฐฏ์ˆ˜๋งŒํผ "0"์„ ๋”ํ•˜๋ฉด TTTT00 ์ด ๋œ๋‹ค.

 

๋‘๋ฒˆ์งธ ์—ด์„ ์˜ˆ๋กœ ํ•œ๋ฒˆ ๋” ์„ค๋ช…ํ•ด๋ณด๋ฉด, MT000T ์ธ ์ƒํ™ฉ์—์„œ

MTT ๋กœ ๋งŒ๋“  ๋’ค, MTT000 ์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋ณ€ํ™˜ํ•œ ๋ฌธ์ž๋ฅผ map์— ์—ด ๋‹จ์œ„๋กœ ๊ธฐ๋กํ•˜๋ฉด ๋ธ”๋ก์ด ์ œ๊ฑฐ๋œ map์œผ๋กœ ๋ฐ”๋€๋‹ค.

 


import java.util.*;
class Solution {
    String[][] map;
    boolean[][] checked;
    int R;
    int C;
    int[] dr = {1,1,0};
    int[] dc = {0,1,1};
    int answer;
    public int solution(int m, int n, String[] board) {
        answer = 0;
        setUp(m,n,board);        
        
        while(findTarget()){
            removeTarget();
            move();
        }
        return answer;
    }
    
    void move(){
        for(int c = 0;c<C;c++){
            StringBuilder sb = new StringBuilder();
            for(int r=R-1;r>=0;r--){
                if(!map[r][c].equals("0")){
                    sb.append(map[r][c]);
                }
            }
            while(sb.length()<R){
                sb.append("0");
            }
            for(int r=0;r<R;r++){
                map[R-1-r][c]=String.valueOf(sb.charAt(r));
            }
        }
    }
    
    void removeTarget(){
        for(int r=0;r<R;r++){
            for(int c =0;c<C;c++){
                if(checked[r][c]){
                    map[r][c]="0";
                    answer++;
                }
            }
        }
    }
    
    boolean findTarget(){
        boolean result = false;
        checked = new boolean[R][C];
        for(int r=0;r<R-1;r++){
            for(int c =0;c<C-1;c++){
                if(!map[r][c].equals("0") && canRemove(r,c)){
                    result = true;
                    checked[r][c]=true;
                    for(int i=0;i<3;i++){
                        checked[r+dr[i]][c+dc[i]]=true;
                    }
                }
            }
        }
        return result;
    }
    
    boolean canRemove(int r, int c){
        String target = map[r][c];
        for(int i=0;i<3;i++){
            int nr = r+dr[i];
            int nc = c+dc[i];
            if(!map[nr][nc].equals(target)){
                return false;
            }
        }
        return true;
    }
    
    void setUp(int m, int n, String[] board){
        R = m;
        C = n;
        map = new String[R][C];
        
        for(int r=0;r<R;r++){
            String [] info = board[r].split("");
            for(int c=0;c<C;c++){
                map[r][c]=info[c];
            }
        }
    }
}

 

    '๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [JAVA] 2020 KAKAO BLIND RECRUITMENT ใ€๊ด„ํ˜ธ ๋ณ€ํ™˜ใ€‘
    • [JAVA] 2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‹ญ ใ€๋ถˆ๋Ÿ‰ ์‚ฌ์šฉ์žใ€‘
    • [JAVA] 2019 KAKAO BLIND RECRUITMENTใ€์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉใ€‘
    • [JAVA] 2022 KAKAO BLIND RECRUITMENTใ€์ฃผ์ฐจ ์š”๊ธˆ ๊ณ„์‚ฐใ€‘
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”