본문 바로가기
알고리즘 문제

카카오 코딩테스트 - 비밀지도

by 박연호의 개발 블로그 2019. 9. 4.

https://tech.kakao.com/2017/09/27/kakao-blind-recruitment-round-1/

 

카카오 신입 공채 1차 코딩 테스트 문제 해설

‘블라인드’ 전형으로 실시되어 시작부터 엄청난 화제를 몰고 온 카카오 개발 신입 공채. 그 첫 번째 관문인 1차 코딩 테스트가 지난 9월 16일(토) 오후 2시부터 7시까지 장장 5시간 동안 온라인으로 치러졌습니다. 지원자들의 개발 능력을 잘 검증하기 위해 출제 위원들이 한 땀 한 땀 독창적이고 다양한 문제들을 만들어 냈고 문제에 이상은 없는지, 테스트케이스는 정확한지 풀어보고 또 풀어보며 […]

tech.kakao.com

1번 문제다 보니 문제 자체는 그렇게 어렵지 않다.

두개의 정수형 배열이 주어지고 각 배열의 정수를 사용하여 비밀지도를 해독하는 문제이다. 

 

먼저 각 배열의 같은 인덱스에 위치해 있는 값은 OR 비트연산을 한다.

이후 비트연산한 값을 2진수로 변환하고 각 자리수가 1이면 #, 0이면 공백으로 변환한다. 마지막으로 이렇게 변환한 문자열의 크기가 지도의 한변의 크기보다 작으면 그 차이 만큼 공백을 더해준다.

 

// https://tech.kakao.com/2017/09/27/kakao-blind-recruitment-round-1/
// 비밀지도

class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {

        String[] answer = new String[n];

        int[] arr = new int[n];

        for (int i = 0; i < n; i++) {

            int num = arr1[i] | arr2[i];
            String s = String.valueOf(Integer.toBinaryString(num));
            String result = "";
            for (int k = 0; k < s.length(); k++) {
                if (s.charAt(k) == '1') {
                    result += "#";
                } else {
                    result += " ";
                }
            }
            for (int j = 0; j < n - s.length(); j++) {
                result = " " + result;
            }
            System.out.println(result);
            answer[i] = result;
        }
        return answer;
    }
}