https://programmers.co.kr/learn/courses/30/lessons/17681
코딩테스트 연습 - [1차] 비밀지도 | 프로그래머스
비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 공백(" ) 또는벽(#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 지도 1과 지도 2라고 하자. 지도 1
programmers.co.kr
방법 1 : 패딩과 문자열 치환을 알고리즘으로
| 
 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 
29 
30 
 | 
 class Solution { 
    public String[] solution(int n, int[] arr1, int[] arr2) { 
        String[] answer = new String[n]; 
        StringBuilder sb = null; 
        for (int i = 0; i < answer.length; i++) { 
            // or 비트연산 
            String strBinary = Integer.toBinaryString(arr1[i] | arr2[i]); 
            sb = new StringBuilder(); 
            // 0으로 왼쪽패딩 
            while(strBinary.length() < n) { 
                strBinary = "0" + strBinary; 
            } 
            // 결과 문자열 만들기 
            for (int j = 0; j < strBinary.length(); j++) { 
                if (strBinary.charAt(j) == '1') { 
                    sb.append('#'); 
                } else { 
                    sb.append(' '); 
                } 
            } 
            answer[i] = sb.toString(); 
        } 
        return answer; 
    } 
} 
Colored by Color Scripter 
 | 
방법 2 : 패딩과 문자열 치환을 자바제공 메소드로
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
 | 
 class Solution { 
    public String[] solution(int n, int[] arr1, int[] arr2) { 
        String[] answer = new String[n]; 
        for (int i = 0; i < answer.length; i++) { 
            // or 비트연산 
            String strBinary = Integer.toBinaryString(arr1[i] | arr2[i]); 
            // 공백 왼쪽패딩 
            strBinary = String.format("%" + n + "s", strBinary); 
            // 문자열 치환 
            strBinary = strBinary.replaceAll("1", "#"); 
            strBinary = strBinary.replaceAll("0", " "); 
            answer[i] = strBinary; 
        } 
        return answer; 
    } 
} 
Colored by Color Scripter 
 | 
방법 1이 방법2보다 좀더 빠르다
보기에는 2번이 깔끔하긴 하지만,
저런게 있는지 굳이 찾아보지 않아도 될 것 같다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
| [프로그래머스][2018 KAKAO BLIND RECRUITMENT] [1차] 다트 게임 (level 1) (0) | 2019.12.10 | 
|---|---|
| [프로그래머스][2019 KAKAO BLIND RECRUITMENT] 실패율 (level 1) (0) | 2019.12.10 | 
| [프로그래머스][서머코딩/윈터코딩(~2018)] 예산 (level 1) (0) | 2019.12.06 | 
| [프로그래머스][2020카카오공채] 문자열 압축 (level 2) (java) (0) | 2019.12.05 | 
| [프로그래머스]탐욕법(Greedy) : 체육복 (level 1) (java, c++) (0) | 2019.11.08 | 
댓글