728x90

# 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/17681

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


# 문제 요약

두개의 지도(1차원 배열)에 공백(0)과 벽(1)이 있다.

그 두개의 지도를 겹친 지도를 공백은 ' '(공백)로 벽은 #으로 return 하는 문제 

 

# 풀이

지도의 공백과 벽을 0과 1로 보고 있기 때문에, 이진수를 사용한 것을 알 수 있다.

그렇다면, 두개의 지도를 겹쳤을때 이진수를 OR로 연산하여 결과를 도출한다는 것을 문제 예시를 통해 확인할 수 있다.

고로, OR 연산 후 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++){
        //     answer[i] = Integer.toBinaryString(arr1[i] | arr2[i]);
        //     int ansLen = answer[i].length();
        //     for(int j=ansLen; j<n; j++){
        //         answer[i]="0"+answer[i];
        //     }
        //     answer[i] = answer[i].replace("1", "#").replace("0", " ");
        // }
        
        for(int i=0; i<n; i++){
            answer[i] = String.format("%"+n+"s", Integer.toBinaryString(arr1[i] | arr2[i]))
                .replace("1", "#").replace("0", " ");
        }
        
        return answer;
    }
}
728x90

+ Recent posts