๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm/Programmers

[Programmers] ์ž๋ฌผ์‡ ์™€ ์—ด์‡ (2020 KAKAO BLIND RECRUITMENT)

[Programmers] ์ž๋ฌผ์‡ ์™€ ์—ด์‡ (2020 KAKAO BLIND RECRUITMENT) JAVA

๋ฌธ์ œ : ์ž๋ฌผ์‡ ์™€ ์—ด์‡ (2020 KAKAO BLIND RECRUITMENT)

๋ฌธ์ œ ์„ค๋ช…

ํฌ๊ธฐ๊ฐ€ N*N์ธ ์ž๋ฌผ์‡ ์™€ ํฌ๊ธฐ๊ฐ€ M*M์ธ ์—ด์‡ ๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

์ž๋ฌผ์‡ ์™€ ์—ด์‡ ๋Š” ๊ฐ๊ฐ ํ™ˆ์ธ ๋ถ€๋ถ„๊ณผ ๋Œ๊ธฐ์ธ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ ์ž๋ฌผ์‡ ๋ณด๋‹ค ํฌ๊ธฐ๊ฐ€ ํ•ญ์ƒ ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์—ด์‡ ๋ฅผ 90๋„์”ฉ ํšŒ์ „ํ•˜๊ฑฐ๋‚˜ ์ด๋™์‹œ์ผœ์„œ ์ž๋ฌผ์‡ ์™€ ์—ด์‡  ์„œ๋กœ์˜ ํ™ˆ๊ณผ ๋Œ๊ธฐ ๋ถ€๋ถ„์„ ๋งž์ถ”๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

solution ๋ฉ”์„œ๋“œ์—์„œ ๋งž์ถœ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด true, ๋งž์ถœ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด false๋ฅผ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


Solution

์™„์ „ ํƒ์ƒ‰

๋งŒ์•ฝ ์–ด๋– ํ•œ ๋ฐฉ๋ฒ•์„ ์จ๋„ ๋งž์ถœ ์ˆ˜ ์—†๋‹ค๋ฉด false๋ฅผ returnํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ ํ•œ, ์ž๋ฌผ์‡ ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๊ฐ€ 20*20(400)์œผ๋กœ ์ถฉ๋ถ„ํžˆ ์ž‘์€ ํฌ๊ธฐ์ด๋ฏ€๋กœ ์™„์ „ ํƒ์ƒ‰์œผ๋กœ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์‚ดํŽด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฌผ์‡ ์˜ ํฌ๊ธฐ๋ฅผ 3๋ฐฐ ํ™•๋Œ€ํ•œ map์„ ๋งŒ๋“  ๋’ค ๊ฐ€์šด๋ฐ์— ์›๋ž˜์˜ ์ž๋ฌผ์‡ ์˜ ์ˆซ์ž๋ฅผ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

๊ทธ ํ›„ ์—ด์‡ ์˜ ๋งต์„ 90๋„์”ฉ 4๋ฒˆ ํšŒ์ „ํ•˜๋ฉฐ ํ•œ ์นธ ํ•œ ์นธ ํ™•์ธํ•˜๋ฉด ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ ํ™ˆ์€ 0, ๋Œ๊ธฐ ๋ถ€๋ถ„์€ 1์ด๋ฏ€๋กœ ํ™•์žฅ๋œ ์ž๋ฌผ์‡ ์— ์—ด์‡  ๊ฐ’์„ ๋”ํ–ˆ์„ ๋•Œ, ๊ฐ€์šด๋ฐ์— ์žˆ๋Š” ์ž๋ฌผ์‡  ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์ˆ˜๊ฐ€ 1์ด๋ผ๋ฉด ์—ด์‡ ๋กœ ์ž๋ฌผ์‡ ๊ฐ€ ์—ด๋ฆฌ๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.


Description

  • ๊ฐ€์šด๋ฐ ์ž๋ฌผ์‡  ๋ฐฐ์—ด์˜ ๊ฐ’์ด ๋ชจ๋‘ 1์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ isSuccsess ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  • 90๋„์”ฉ ํšŒ์ „์‹œํ‚ค๋Š” ๊ฒƒ์€ rotMap ๋ฉ”์„œ๋“œ์—์„œ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์†Œ์Šค์ฝ”๋“œ

class Solution {

    public static boolean isSuccsess(int[][] map){
        int size= map.length/3;
        boolean result = true;
        for(int i=size;i<2*size;i++){
            for(int j=size;j<2*size;j++){
                if (map[i][j]!=1) result=false;
            }
        }
        return result;
    }

    public static int[][] rotMap(int[][] map){
        int mapSize = map.length;
        int[][] returnMap = new int[mapSize][mapSize];
        for(int i=0;i<mapSize;i++){
            for(int j=0;j<mapSize;j++){
                returnMap[i][j] = map[mapSize-j-1][i];
            }
        }
        return returnMap;
    }

    public boolean solution(int[][] key, int[][] lock) {
        int m = key.length;
        int n = lock.length;

        int[][] map = new int[n*3][n*3];
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                map[n+i][n+j] = lock[i][j];
            }
        }

        for(int z=0;z<4;z++){
            key = rotMap(key);
            for(int x=0;x<2*n;x++){
                for(int y=0;y<2*n;y++){
                    for(int i=0;i<m;i++){
                        for(int j=0;j<m;j++){
                            map[x+i][y+j]+=key[i][j];
                        }
                    }
                    if(isSuccsess(map)) return true;
                    for(int i=0;i<m;i++){
                        for(int j=0;j<m;j++){
                            map[x+i][y+j]-=key[i][j];
                        }
                    }
                }
            }
        }

        return false;
    }
}

'Algorithm > Programmers' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Programmers] ์ง€ํ˜• ์ด๋™  (0) 2022.03.16
[Programmers] ๋ธ”๋ก ์ด๋™ํ•˜๊ธฐ(2020 KAKAO BLIND RECRUITMENT)  (0) 2022.03.16