알고리즘 공부/프로그래머스

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

HRuler 2020. 10. 8. 20:57

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/17681?language=java

 

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

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

programmers.co.kr

2. 나의 풀이

import java.util.Arrays;

class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String [arr1.length];
        for(int i = 0; i < answer.length; i = i + 1) {
        	answer[i] = "";
        }
        String [] str1 = new String [arr1.length];
        String [] str2 = new String [arr2.length];
        for(int i = 0; i < arr1.length; i = i + 1) {
        	str1[i] = Integer.toBinaryString(arr1[i]);
        	str2[i] = Integer.toBinaryString(arr2[i]);
        }
        
        for(int i = 0; i < arr1.length; i = i + 1) {
        	for(int j = 1; j < n; j = j + 1) {
        		if(str1[i].length() == j) {
        			str1[i] = "0" + str1[i];
        		}
        		if(str2[i].length() == j) {
        			str2[i] = "0" + str2[i];
        		}
        	}
        }
        //System.out.println(Arrays.toString(str1));
        
        for(int i = 0; i < answer.length; i = i + 1) {
        	for(int j = 0; j < n; j = j + 1) {
        		if(str1[i].substring(j, j + 1).equals("1") || str2[i].substring(j, j + 1).equals("1")) {
        			answer[i] += "#";
        		}else if(str1[i].substring(j, j + 1).equals("0") && str2[i].substring(j, j + 1).equals("0")) {
        			answer[i] += " ";
        		}
        	}
        	//System.out.println(Arrays.toString(answer));
        }
        return answer;
    }
}

3. 다른 사람 풀이

class Solution {
  public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] result = new String[n];
        for (int i = 0; i < n; i++) {
            result[i] = Integer.toBinaryString(arr1[i] | arr2[i]);
        }

        for (int i = 0; i < n; i++) {
            result[i] = String.format("%" + n + "s", result[i]);
            result[i] = result[i].replaceAll("1", "#");
            result[i] = result[i].replaceAll("0", " ");
        }

        return result;
    }
}