Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags more
Archives
Today
Total
관리 메뉴

공부블로그

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

IT/알고리즘

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

So1_b 2022. 7. 7. 21:43

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

 

프로그래머스

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

programmers.co.kr

 

코드 설명

- arr1[ ] , arr2[ ]은 각각 지도를 의미하고 이 두개를 합쳐 전체지도가 된다.

  문제의 규칙을 보면  전체 지도에서 벽과 공백은 OR개념

 

- 배열 arr1[], arr2[]의 인덱스를 가리키기 위해 변수 i를 0 ~ n-1으로 설정해 for문을 작성한다.

 

-  i의 값이 변경될 때 마다 sb를 초기화한다. 

 

- 각 요소값을 2로 나눠 나머지를 비교한다.

  이때 몫이 0이 되더라도 이진수로 변경했을 때 길이가 n이 되야하므로 j의 범위를 1 ~ n으로 설정한다.

  나머지가 모두 0일경우 sb에 0을 넣고, 둘 중 하나라도 1이면 1을 대입한다.

 

- sb에 이진수의 값이 거꾸로 저장됨 따라서 reverse()를 통해 뒤집어 String[]에 저장한다. 

 

class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];
        StringBuilder sb =new StringBuilder(5);
        
        for(int i=0; i<n; i++){
            sb.delete(0,n); 
            
            for(int j=1; j<=n; j++){
                
                if(arr1[i]%2 + arr2[i]%2 == 0){ 
                    sb.append(" ");
                }else sb.append("#");
                
                arr1[i] /= 2;
                arr2[i] /= 2;
            }
            
            answer[i] = sb.reverse().toString();
        }
        return answer;
    }
}
Comments