smooth waters run deep

1d-1c/Programmers

Level1_비밀지도 (JAVA)

yeon_11 2020. 12. 11. 13:21
 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr

 

① 이진수 변환 메소드 이용
class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];
        for(int i=0; i<n; i++){
            StringBuilder sb = new StringBuilder();

            int temp = arr1[i]|arr2[i];
            int[] tempArr = makeBinary(n, temp);

            for(int j=0; j<n; j++){
                if(tempArr[j]==0)
                    sb.append(" ");
                else 
                    sb.append("#");
            }

            answer[i] = sb.toString();
        }

        return answer;
    }

    private static int[] makeBinary(int n, int num){
        int[] binaryArr = new int[n];
        int i=n-1;
        while(num!=1){
            binaryArr[i--] = num%2;
            num /= 2;
        }
        binaryArr[i] = num;

        return binaryArr;
    }
}

 

 

② Integer클래스 이용
class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];
        for(int i=0; i<n; i++){
            StringBuilder sb = new StringBuilder();

            int temp = arr1[i]|arr2[i];
            String tempToBinary = String.format("%"+n+"s", Integer.toBinaryString(temp));
            
            char[] tempArr = tempToBinary.toCharArray();

            for(int j=0; j<tempArr.length; j++){
                if(tempArr[j]=='1')
                    sb.append("#");
                else 
                    sb.append(" ");
            }

            answer[i] = sb.toString();
        }

        return answer;
    }
}

 

 

 

③ Integer클래스, String.replace() 이용
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] = String.format("%"+n+"s", Integer.toBinaryString(arr1[i]|arr2[i]))
            .replace("1","#").replace("0"," ");
        }

        return answer;
    }
}

 

'1d-1c > Programmers' 카테고리의 다른 글

Level1_정수 제곱근 판별 (JAVA)  (0) 2020.12.13
Level1_다트게임 (JAVA)  (0) 2020.12.11
Level1_실패율 (C++) (JAVA)  (0) 2020.12.09
Level2_카카오프렌즈 컬러링북 (JAVA)  (0) 2020.11.05
Level2_기능개발 (C++) (JAVA)  (0) 2020.11.05