본문 바로가기
Problem-solving/프로그래머스

프로그래머스 - (2018 KAKAO BLIND RECRUITMENT) [1차]비밀지도 (Java)

by taehee.kim.dev 2020. 11. 21.

programmers.co.kr/learn/courses/30/lessons/17681

 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr

class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];

        char[][] arr1Binaries = new char[n][n];
        char[][] arr2Binaries = new char[n][n];

        decryptMap(n, arr1, arr1Binaries);
        decryptMap(n, arr2, arr2Binaries);

        char[][] decryptedMap = new char[n][n];
        for (int row_i = 0; row_i < n; row_i++){
            for (int col_i = 0; col_i < n; col_i++){
                if (arr1Binaries[row_i][col_i] == '1' || arr2Binaries[row_i][col_i] == '1'){
                    decryptedMap[row_i][col_i] = '#';
                }else{
                    decryptedMap[row_i][col_i] = ' ';
                }
            }
        }

        for (int i = 0; i < n; i++){
            answer[i] = String.valueOf(decryptedMap[i]);
        }

        return answer;
    }

    private void decryptMap(int n, int[] arr, char[][] arrBinaries) {
        for (int row_i = 0; row_i < n; row_i++) {
            int secretRowNum = arr[row_i];
            String decryptedRow = String.format("%0" + n + 'd', Long.parseLong(Integer.toBinaryString(secretRowNum)));
            for (int char_i = 0; char_i < n; char_i++) {
                arrBinaries[row_i][char_i] = decryptedRow.charAt(char_i);
            }
        }
    }
}

댓글