본문 바로가기
알고리즘 문제풀이/Programmers - 자바

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

by 올리브영 2023. 3. 28.
728x90
반응형
class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];
        String[] arrNum1 = new String[n]; // arr1의 이진수를 담을 배열
        String[] arrNum2 = new String[n]; // arr2의 이진수를 담을 배열
        
        for(int i=0; i<n; i++){ // 이진수로 바꿔주는 작업
            String a = String.valueOf(Integer.toString(arr1[i] ,2));
            String b = String.valueOf(Integer.toString(arr2[i] ,2));
            if(a.length()<n){ // 이진수가 한 변의 길이보다 작은 경우 
                String[] aNum = new String[n];
                String d = "";
                for(int j=0; j<n; j++){
                    if(j>=0 && j<n-a.length()){
                        aNum[j] = "0";
                    }
                    else{
                        aNum[j] = a.charAt(j-(n-a.length()))+"";
                    }
                }
                for(String k : aNum){
                    d+=k;
                }
                arrNum1[i] = d;
            }else{
                arrNum1[i] = a;
            }
            
            if(b.length()<n){ // 이진수가 한 변의 길이보다 작은 경우 
                String[] bNum = new String[n];
                String d = "";
                for(int j=0; j<n; j++){
                    if(j>=0 && j<n-b.length()){
                        bNum[j] = "0";
                    }
                    else{
                        bNum[j] = b.charAt(j-(n-b.length()))+"";
                    }
                }
                for(String k : bNum){
                    d+=k;
                }
                arrNum2[i] = d;
            }else{
                arrNum2[i] = b;
            }

        }

        for(int i=0; i<n; i++){
            String a = "";
            String[] n1 = arrNum1[i].split("");
            String[] n2 = arrNum2[i].split("");
            for(int j=0; j<n1.length; j++){
                if(n1[j].equals("1") || n2[j].equals("1")){
                    a+="#";
                }
                else{
                    a+=" ";
                }
            }
            answer[i] = a;
        }
        
        return answer;
    }
}
728x90
반응형