[ Programmers ] 2018 KAKAO BLIND RECRUITMENT - [1차] 비밀지도 (Java)

ma.caron_g·2021년 12월 2일
0

Lv.1 - Programmers (완성)

목록 보기
51/74
post-thumbnail

1. Problem 📃

[ 2018 KAKAO BLIND RECRUITMENT - [1차] 비밀지도 ]

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


2. Solution 🔑

  1. 입력 받은 정수 배열을 이진수로 만들어 주는 함수를 만들어준다.
  2. 정수를 2로 나누면서 나머지를 맨 뒷자리 배열부터 채워주고, 부족하다면 0으로 채운다.
  3. for문을 돌려 map1과 map2가 둘 중 하나라도 1이면 새로운 map3는 "#"으로 채운다. 그렇지 않다면 공백으로 남겨둔다.
  4. 그렇게 만들어진 map3를 한 줄 한 줄 StringBuilder()에 담아 answer배열에 한 줄씩 추가해주고 리턴.

3. Code 💻

import java.util.Arrays;

class Solution {
	public String[][] MakeBinary(int n, int[] arr) {
		String[][] map = new String[n][n];
		
		for(int i=0; i<n; i++) {
			for(int j=n-1; j>=0; j--) {
				map[i][j] = Integer.toString(arr[i] % 2);
				arr[i] = arr[i] / 2;
			}
			if(map[i].length < n) {
				for(int j=map[i].length; j<5; j++) {
					map[i][j] = "0";
				}
			}
		}
		return map;
	}

    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];
        
        String[][] map1 = MakeBinary(n, arr1);
        String[][] map2 = MakeBinary(n, arr2);
        String[][] map3 = new String[n][n];
        
        for(int i=0; i<n; i++) {
        	for(int j=0; j<n; j++) {
        		if((map1[i][j].equals("1") || map2[i][j].equals("1"))) {
        			map3[i][j] = "#";
        		}
        		else {
        			map3[i][j] = " ";
        		}
        	}
        }
        
        for(int i=0; i<n; i++) {
        	StringBuilder sb = new StringBuilder();
        	for(int j=0; j<n; j++) {
        		sb.append(map3[i][j]);
        	}
        	answer[i] = sb.toString();
        }
        
        return answer;
    }
}

4. Growth 🍄

다른 알고리즘 풀어보다가 배운 String 클래스로 받던걸 StringBuilder로 받았더니 시간이 1초 정도 단축 됐다.

👍🏻

profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글