본문 바로가기

algorithm

[프로그래머스][1차]비밀지도

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

 

코딩테스트 연습 - [1차] 비밀지도 | 프로그래머스

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 공백(" ) 또는벽(#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 지도 1과 지도 2라고 하자. 지도 1

programmers.co.kr

입력형식

입력으로 지도의 한 변 크기 n과 2개의 정수 배열 arr1, arr2가 들어온다..

  • 1 <= n <= 16
  • arr1, arr2는 길이 n인 정수 배열로 주어진다.
  • 정수 배열의 각 원소 x를 이진수로 변환했을 때의 길이는 n 이하이다. 즉, 0 <= x <= 2^(n-1)을 만족한다.

출력형식

원래의 비밀지도를 해독하여 '#', 공백으로 구성된 문자열 배열로 출력하라.

 

풀이

arr1, arr2 배열에 있는 십 진수 값을 temp1, temp2에 대입하고 s1, s2에 2진수로 바꿔서 문자열로 대입한다.

그리고 result 값에 s1, s2 값을 비교하여 하나의 2진수 값을 만들어 준다.

  for (int j = n - 1; j >= 0 ; j--) {
		   s1 += (temp1 % 2);
		   temp1 /= 2; 
		   s2 += temp2 % 2;
		   temp2 /= 2;
			   
		   if (s1.equals("1") || s2.equals("1"))
			   result += "1";
		   else 
			   result += "0";
			   
		   s1 = "";
		   s2 = "";
	   }

 

result 값을 char 형으로 변경하여, 1일때는 '#', 0일 때는 ' '(공백)을 ginRes에 넣어준다.

result 값은 결과 값이 반대로 대입되어져 있기 때문에 (int k = n - 1; k >= 0; k--) 조건을 주어 뒤에서 부터 값을 

비교한다.

for (int k = n - 1; k >= 0; k--) {			   
		   if (result.charAt(k) == '1')
			   ginRes += "#";
		   else
			   ginRes += " ";
}

 

마지막으로 그 값을 answer[i] = ginRes에 대입해준다.

 

class Solution {
  public String[] solution(int n, int[] arr1, int[] arr2) {
      
    String[] answer = new String[n];
    String s1 = "" , s2 = "", result = "", ginRes= "";
    int temp1 = 0, temp2 = 0;
      
    for (int i = 0; i < n; i++) {
	   temp1 = arr1[i];
	   temp2 = arr2[i];
	
        for (int j = n - 1; j >= 0 ; j--) {
		   s1 += (temp1 % 2);
		   temp1 /= 2; 
		   s2 += temp2 % 2;
		   temp2 /= 2;
			   
		   if (s1.equals("1") || s2.equals("1"))
			   result += "1";
		   else 
			   result += "0";
			   
		   s1 = "";
		   s2 = "";
	   }
		   
	   for (int k = n - 1; k >= 0; k--) {			   
		   if (result.charAt(k) == '1')
			   ginRes += "#";
		   else
			   ginRes += " ";
	   }
		   
	   result = "";
	   answer[i] = ginRes;
	   ginRes = "";
   }
      
      return answer;
  }
}

'algorithm' 카테고리의 다른 글

[프로그래머스]멀쩡한 사각형  (0) 2020.03.01
[프로그래머스]기능개발  (0) 2020.01.12
[프로그래머스]위장  (0) 2020.01.08
[프로그래머스]프린터  (0) 2020.01.02
[프로그래머스][1차]다트게임  (0) 2019.12.22