[프로그래머스] [1차] 비밀지도.java

hgghfgf·2023년 7월 4일
0

프로그래머스

목록 보기
204/227

[1차] 비밀지도.java

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] = row(n, arr1[i], arr2[i]);
        }
        
        return answer;
    }
    
    private String row(int n, int row1, int row2){
        StringBuilder sb = new StringBuilder();
        
        int orRow = row1 | row2;
        for(int i = 0; i < n; i++){
            int bit = ((orRow & (1<< (n-1-i))) > 0) ? 1 : 0;
            sb.append(bit == 1 ? "#" : " ");
        }
        
        return sb.toString();
    }
}

orRow와 (1<< (n-1-i))를 비트별 AND 연산(&)을 수행하여 특정 비트를 추출합니다. 비트가 0보다 크면 해당 비트는 1로 설정되어 있으므로 bit 변수에 1을 할당합니다. 그렇지 않으면 bit 변수에 0을 할당합니다.

bit 변수가 1이면 sb 문자열에 "#"을 추가하고, 그렇지 않으면 공백을 추가합니다.

반복문이 종료되면 sb 문자열을 String으로 변환하여 반환합니다.

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/courses/30/lessons/17681

0개의 댓글