본문 바로가기
Problem Solving/카카오 블라인드 기출

2018 - [1차] 비밀지도

by Libi 2021. 8. 7.
반응형

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

 

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

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

programmers.co.kr

[ 문제풀이 ]

정말로 간단한 문제이다. 10진수를 2진수 형태로 표현하는 방법만 안다면 쉽게 해결할 수 있다.

방법은 간단하다. 10진수를 원하는 길이(n) 만큼 2로 나눠주면 된다. 2로 나눠주면서 나머지를 출력하면 2진수로 표현한 값이 나온다. 단, 출력은 마지막 나머지부터 역순으로 출력해줘야 한다.

매번 나눌 때마다 두 수의 나머지 중 1이 하나라도 존재한다면 "#"을 삽입해주면 되고 존재하지 않는다면 " "을 삽입해주면 된다.

import java.util.*;

class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];
        
        for (int i = 0; i < n; ++i) {
            StringBuilder decode = new StringBuilder();
            
            //n만큼의 길이가 필요하기 때문에 n번 돌려줌
            for (int j = 0; j < n; ++j) {
                int first = arr1[i] % 2;
                int second = arr2[i] % 2;
                
                arr1[i] /= 2;
                arr2[i] /= 2;
                
                //제일 끝자리부터 채워지기 때문에 맨 앞에 삽입해줌
                if (first == 1 || second == 1) {
                	decode.insert(0, "#");
                } else {
                	decode.insert(0, " ");
                }
            }
            answer[i] = decode.toString();
        }
        return answer;
    }
}

 

 

반응형

'Problem Solving > 카카오 블라인드 기출' 카테고리의 다른 글

2018 - [3차] 방금그곡  (0) 2021.08.07
2018 - [1차] 다트 게임  (0) 2021.08.07
2018 - [1차] 캐시  (0) 2021.08.07
2018 - [1차] 프렌즈4블록  (0) 2021.08.07
2018 - [1차] 셔틀버스  (0) 2021.08.07

댓글