알고리즘, 코딩테스트/알고리즘 풀이

[프로그래머스/ 코딩테스트 2018 KAKAO BLIND RECRUITMENT] [1차] 비밀지도

jiyoon0000 2025. 2. 24. 20:32

Q. [1차] 비밀지도

A.

class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
    
    	//지도를 저장할 문자열 배열 생성(지도 크기 n*n 정사각형)
        String[] answer = new String[n];
        
        //각 행에 대해 반복
        //arr1과 arr2에 대해 OR 연산 수행
        //OR 연산 = 두 숫자 중 하나라도 1이면 1
        for(int i = 0; i < n; i++){
            int map = arr1[i] | arr2[i];
            
            //행을 저장할 문자열
            String result = "";
            
            //컴퓨터상으로는 2진 계산, 보는건 10진법 -> 계산이 되도 10진법이나 마찬가지
            //OR 연산결과를 2진수로 바꾸기
            for(int j = 0; j < n; j++){
                int a = map % 2;
                
                //나머지가 1이면 #, 0이면 공백
                if(a == 1){
                    result = "#" + result;
                } else {
                    result = " " + result;
                }
                
                //다음 자리수로 넘어가기 위해 2로 나눠줌
                map = map / 2;
            }
            
            //계산된 행의 문자열을 결과 배열에 저장
            answer[i] = result;
        }
        
        return answer;
    }
}