코딩테스트

[코딩테스트(Java)] 프로그래머스 17681 비밀지도

inhooo00 2025. 3. 6. 17:33

오늘부터 재활 들어갑니다..

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

public String[] solution(int n, int[] arr1, int[] arr2) {
    String[] answer = new String[n];
    String[] arr1To = new String[n];
    String[] arr2To = new String[n];

    for (int i = 0; i < n; i++) {
        arr1To[i] = String.format("%" + n + "s", Integer.toBinaryString(arr1[i])).replace(" ", "0");
        arr2To[i] = String.format("%" + n + "s", Integer.toBinaryString(arr2[i])).replace(" ", "0");
    }

    for (int i = 0; i < n; i++) {
        answer[i] = "";
        for (int j = 0; j < n; j++) {
            if (arr1To[i].charAt(j) == '1' || arr2To[i].charAt(j) == '1') {
                answer[i] += "#";
            } else {
                answer[i] += " ";
            }
        }
    }
    return answer;
}

 

📍포인트

1. arr1To[i] = String.format("%" + n + "s", Integer.toBinaryString(arr1[i])).replace(" ", "0"); 로 칸 수를 유지하기.
2. 배열이 처음에 null로 들어가있으니, answer[i] = "";로 초기화해주기.

 

📍삽질

1. toBinaryString() 를 생각하지 못하고 직접 2진수 변환 로직을 구현하다가 1시간 날림.
2. 배열이 null로 초기화되는 사실을 잊고, 그대로 진행하다가 null##### 이런 식으로 나옴.