본문 바로가기
Algorithm (PS)/프로그래머스

[프로그래머스 Level 1] [1차] 비밀지도(Java)

by 태크민 2023. 8. 26.

문제

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

 

프로그래머스

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

programmers.co.kr

 

코드

class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];
        for(int i=0; i<arr1.length; i++){
            int bit=arr1[i] | arr2[i];   
            String binaryString = Integer.toString(bit, 2);
            binaryString = translate(binaryString, n);
            
            binaryString = binaryString.replace("1","#");
            binaryString = binaryString.replace("0"," ");
            answer[i]=binaryString;
        }
        return answer;
    }
    
    //이진수 String의 size가 n이하라면 앞에 0을 붙힌다.
    String translate(String binaryString, int n){
        String s="";
        if(binaryString.length()<n){
            for(int i=0; i<n-binaryString.length(); i++){
                s+="0";
            }
        }
        s+=binaryString;
        return s;
    }
}

 

다른 사람 코드는 더 깔끔하게 가독성 있게 짠 것 같다.

다른 사람 풀이코드

public class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {

        String[] answer = new String[n];

        for (int i = 0; i < n; i++) {
            // 1. arr1과 arr2의 원소들을 이진수로 바꾼뒤, or 비트논리 연산 수행
            String str = Integer.toBinaryString(arr1[i] | arr2[i]);

            // 2. 5자리의 문자열 형태로 포뱃 변경, 5자리가 안되는 이진수의 나머지는 공백으로 채운다.
            str = String.format("%" + n + "s", str);

            // 3. 1->"#", 0-> 공백
            str = str.replace("1", "#");
            str = str.replace("0", " ");

            // 4. 한줄 완성
            answer[i] = str;
        }

        return answer;
    }
}