[1차] 비밀지도

Heeeoh·2023년 2월 15일
0

프로그래머스

목록 보기
4/26
post-thumbnail

🔍문제 분석

✔️ 출처

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

📖 문제


비트연산 문제

🔅 문제풀이

처음엔 Integer.toString(arr[i],2); 한다음 문자열 charAt()해서 각각 자리수에 따라 1이면 # 0이면 공백을 할라했는데

핵심은 비트연산이였다.

class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] code = new String[arr1.length];

        for(int i = 0 ; i < arr1.length; i++){
            code[i] = Integer.toString(arr1[i] | arr2[i],2);
            String tmpbin = code[i];
            
            code[i] = code[i].replace("1","#").replace("0"," ");
            
            if( Integer.parseInt(tmpbin,2) < Math.pow(2,n - 1)){
                
                do{
                    code[i] = " " + code[i];
                }while(code[i].length() < n);
            }

        }
        return code;
    }
}

String.format을 사용할 생각을 못했다. 최대한 어떻게든 풀었다.


❗ 오답노트 / 필요한 지식

  1. 입출력 예제의 출력부분이 이상하다.
  2. 비트연산 공부의 필요성을 얻었다.
  3. String.format도 공부할 예정
profile
열심히 살자

0개의 댓글