티스토리 뷰
문제
프로그래머스 2018 카카오 공채 - 비밀지도
풀이
- 배열로 입력받은 10진수들을 모두 2진수로 바꿔줘야한다 -> Integer.toBinaryString() 사용
- 두 개의 지도를 주어진 조건에 맞게 합쳐야하므로 OR 연산을 실행한다 -> arr1[i] | arr2[i]
- 그런데 2진수로 바꾸면서 1이 나오기 전의 0들은 사라져버리기 때문에 String.format을 사용해서 사라진 0들을 살려줘야한다
- ⭐️map[i] = String.format("%" + n + "s", map[i]); -> n의 크기만큼 고정된 문자열(%'n's)에 map[i]의 값을 넣는다는 뜻이다
- 예를들어 String.format("%6s", 1)의 결과는 "(5개의 공백)1"이 된다
- 그 이후 replace() 함수로 0은 공백으로, 1은 #으로 바꿔주면 기존 공백은 유지되고 해당 숫자들은 기호로 바뀌게 된다
코드
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = {};
String[] map = new String[n];
for(int i = 0 ; i < n ; i++) {
map[i] = Integer.toBinaryString(arr1[i] | arr2[i]);
}
for (int i=0; i<n; i++) {
map[i] = String.format("%"+n+"s", map[i]);
map[i] = map[i].replace("1", "#");
map[i] = map[i].replace("0", " ");
}
for(int i=0; i<n; i++) {
System.out.println(map[i]);
}
answer = map;
return answer;
}
}
'Algorithm' 카테고리의 다른 글
[Algorithm] 최대공약수&최소공배수 구하기 - 유클리드 호제법 (0) | 2020.04.25 |
---|---|
[Algorithm] 프로그래머스 2019 카카오 인턴십 - 인형뽑기 (0) | 2020.04.25 |
[Alogorithm] 백준 2178번 미로탐색 - BFS (0) | 2020.04.19 |
[Algorithm] 백준 1260번 - BFS (0) | 2020.04.11 |
[Algorithm] 백준 숨바꼭질 1697번 - BFS (0) | 2020.04.09 |