다희의 코딩 성장일기

[프로그래머스] level1. [1차] 비밀지도 (자바 JAVA) 본문

Algorithm/프로그래머스

[프로그래머스] level1. [1차] 비밀지도 (자바 JAVA)

ilmiodiario 2021. 8. 22. 16:53

[ 문제 ]  [프로그래머스] level1. [1차] 비밀지도 (자바 JAVA)

 

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/17681

 

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

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

programmers.co.kr


# 접근 방법 및 풀이 

 

  • arr1[]배열과 arr2[]배열에 들어오는 10진수 정수를 2진수 형태로 바꿔주고, OR비트연산을 통해서 구했다.
  • Integer.toString(3, 2); 이렇게 하면 정수 3을 2진수 String 값으로 변환해준다.
  • 따라서 Integer.toString(arr1[i] | arr2[i], 2)하면 or연산이 되어 계산이 된다. 
  • String값을 1'#'으로 0' '공백으로 replace를 사용해 변경해준다.
  • 이때 변환한 String의 길이가 n보다 작을 수가 있다. 예를들어, 1 | 1 은 1로 찍히기 때문에 n자릿수까지 맞춰주어야한다.
  • 자세한건 코드참조

# 주의할 점 

 

  • 2진수로 변환한 String 자릿수 살펴보기

 

JAVA 코드
import java.util.*;
class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String [n];
        for(int i = 0 ; i < arr1.length; i++){
            String s = Integer.toString(arr1[i]|arr2[i], 2);
            s = s.replace("0", " ");
            s = s.replace("1", "#");
            if(s.length() != n){
                String add = "";
                for(int j = 0; j < n-s.length(); j++)
                    add += " ";
                s = add+s;
            }      
            answer[i] = s;
        }
        return answer;
    }
}

 

 

 

REVIEW

Comments