티스토리 뷰
https://programmers.co.kr/learn/courses/30/lessons/17681
코딩테스트 연습 - [1차] 비밀지도
비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다
programmers.co.kr
[문제 풀이]
1. n의 범위는 1 ~16이므로 O(n)으로 충분히 풀 수 있다.
2. 지도에 주어진 수를 이진수로 바꿨을 때 1인 부분이 벽, 0인 부분이 공백이다.
3. 둘 중에 하나라도 벽이면 벽이고, 둘 다 공백이면 공백이다.
4. 지도1, 지도 2에 주어진 수를 or연산을 해준 후, 이진수로 변경해준다.
5. 변경된 이진수에 1인 부분을 "#", 0인 부분을 " "으로 바꿔준다.
6. 모든 수를 변환했다면 반환한다.
[소스 코드]
import java.util.Arrays;
public class SecretMap {
private static StringBuilder stringBuilder = new StringBuilder();
public static void main(String[] args) {
int n = 5;
int[] arr1 = {9, 20, 28, 18, 11};
int[] arr2 = {30, 1, 21, 17, 28};
System.out.println(Arrays.toString(solution(n, arr1, arr2)));
}
private static String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for (int i = 0; i < n; i++) {
answer[i] = binary(arr1[i] | arr2[i], n)
.replace("1", "#")
.replace("0", " ");
}
return answer;
}
private static String binary(int number, int n) {
stringBuilder.setLength(0);
while (number > 0) {
stringBuilder.append(number % 2);
number /= 2;
}
String binary = stringBuilder.reverse().toString();
if (binary.length() < n) {
stringBuilder.insert(0, "0".repeat(n - binary.length()));
}
return stringBuilder.toString();
}
}
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 키패드 누르기 (lv.1) (0) | 2020.08.03 |
|---|---|
| [프로그래머스] 다트 게임 (lv.1) (0) | 2020.07.31 |
| [프로그래머스] 예산 (lv.1) (0) | 2020.07.31 |
| [프로그래머스] 직사각형 별찍기 (lv.1) (0) | 2020.07.28 |
| [프로그래머스] x만큼 간격이 있는 n개의 숫자 (lv.1) (0) | 2020.07.28 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- dfs
- 열혈강의
- Python
- git
- 자료구조
- DP
- programmers
- 단계별로 문제풀이
- 저장소
- Algorithm
- 그리디
- spring boot 2.3.1
- BOJ
- Idempotent
- bfs
- Summer/Winter Coding(~2018)
- OS
- 그래프
- 백준
- 알고리즘
- 2019 카카오 개발자 겨울 인턴십
- binary search
- 구현
- 코틀린
- 2020 카카오 인턴십
- 정렬
- 깃
- 이것이 코딩테스트다
- repository
- Algorihtm
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함
