자료구조&알고리즘/프로그래머스

프로그래머스 - [1차] 비밀지도 (JAVA)

yong_ღ'ᴗ'ღ 2023. 11. 13. 17:34

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

접근방식)

1. 배열의 길이 n만큼 반복문을 수행한다.

2. 정수 배열 2개의 각 숫자를 이진수로 바꾼다.

    배열의 길이 n만큼 이진수의 길이를 맞춰줘야 하므로, n만큼 앞부분에 0을 채워준다.

3. n만큼 반복문을 수행하면서, 이진수의 각 자릿수를 비교하여 StringBuilder에 벽과 공백을 추가해주면 된다.

   둘 중에 하나라도 1이면 벽이므로 #를 추가해주고, 

   둘 다 0이라면, 공백을 추가해준다.

4. StringBuilder를 정답 배열에 저장한다.

 

class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];
        StringBuilder sb;
        for (int i = 0; i < n; i++) {
            sb = new StringBuilder();
            StringBuilder s1 = new StringBuilder(Integer.toString(arr1[i], 2));
            StringBuilder s2 = new StringBuilder(Integer.toString(arr2[i], 2));
            
            for (int j = s1.length(); j < n; j++)
                s1.insert(0, "0");
            for (int j = s2.length(); j < n; j++)
                s2.insert(0, "0");
            
            for (int j = 0; j < n; j++) {
                if (s1.charAt(j) == '1' || s2.charAt(j) == '1')
                    sb.append('#');
                else
                    sb.append(' ');
            }  
            answer[i] = sb.toString();
        }       
        return answer;
    }
}