비밀지도

DeadWhale·2022년 10월 19일
0

프로그래머스

목록 보기
20/21
post-thumbnail

네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.


지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다.
전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다.
"지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다.
암호화된 배열은 지도의 각 가로줄에서 벽 부분을 1, 공백 부분을 0으로 부호화했을 때 얻어지는 이진수에 해당하는 값의 배열이다.


class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
		String[] answer = new String[n];
		
//%d -정수
//%f -실수
//%s -문자열
		for(int i=0; i<n; i++){
        
		String str = String.format("%"+n+"s", 
        		Integer.toBinaryString(arr1[i]|arr2[i]));
                
			str = str.replaceAll("1","#");
			str = str.replaceAll("0"," ");
			answer[i] = str;
       }
     return answer;
	}   
}    	

초반부에는 어렵지 않게 해결했는데 문자열로 변환하고 Integer로 파싱하면서 . 0이 사라지는 문제가 발생했다. 0이 사라져 인자가 사라지다보니 다른데서 문제가 발생했나?
하고 어문데를 엄청 찾으면서 시간을 낭비했다

해결책은 String.format을 활용해 문자열의 길이를 유지하는 방법을 검색해 찾아냈다...
초반에는 금방 해결할것 처럼 보였는데 문제에 직면하고 해결하는데 시간이 너무 소모됬다.

0개의 댓글