코딩 테스트/프로그래머스

프로그래머스 - 비밀지도 문제 (자바)

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

 

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

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

programmers.co.kr

두 수를 비트 연산자 | 를 통해서 합치고

2진법으로 변경하면서 n보다 짧으면 0을 앞에 추가해준 뒤

replace를 통해서 1은 #으로 0은 공백으로 변경해주어서 해결하였습니다.

// 프로그래머스 비밀지도 문제
class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];
        for(int i = 0 ; i < n; i++) {
            String s1 = staticLengthBinaryString(n, arr1[i] | arr2[i]);
            answer[i] = toShapString(s1);
        }
        return answer;
    }

    public String staticLengthBinaryString(int length, int number) {
        String binaryString = Integer.toBinaryString(number);
        StringBuilder temp = new StringBuilder();
        for(int i = 1; i <= length - binaryString.length(); i++) {
            temp.append("0");
        }
        return temp.append(binaryString).toString();
    }

    static String toShapString(String str) {
        return str.replace("1", "#").replace("0", " ");
    }
}