입력으로 들어오는 숫자들을 토대로 지도를 만드는 문제입니다.
class Solution {
public static String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for(int i = 0; i < n ;i++) {
answer[i] = Integer.toBinaryString(arr1[i] | arr2[i]);
answer[i] = String.format("%" + n + "s", answer[i]);
answer[i] = answer[i].replaceAll("1", "#");
answer[i] = answer[i].replaceAll("0", " ");
}
return answer;
}
}
10진수로 입력들어오는 숫자를 2진수로 바꾼게 지도가 되고, 두 지도를 합쳐서 두 지도 중 하나라도 벽인 부분은 전체 지도에서도 벽이 됩니다.
이 때, 자바의 Integer 클래스에는 toBinaryString() 이라는 아주 유용한 메소드가 있습니다.
파라미터로 10진수를 넣으면 2진수로 변환된 String을 리턴해줍니다.
자매품으로는 toOctalString(), toHexString() 이 있습니다..
여기서 우리는 길이가 n인 문자열을 갖고 와야 하므로 String 클래스의 format() 메소드로 문자열의 크기를 지정해줍니다.
n=5일 때, String.format("%5s", answer[i]); 이렇게 되면 왼쪽에 " "을 넣어 길이가 5인 문자열로 변환해줍니다. 오른쪽에 빈 칸을 넣고 싶으면 %-5s 하면 되겠져.
그러고 1을 벽(#), 0을 공백으로 나타내어 리턴해주면 됩니다..
감사합니당. ^_^
'Algorithm > Programmers' 카테고리의 다른 글
[2020 KAKAO BLIND RECRUITMENT][시뮬레이션/완전 탐색] 자물쇠와 열쇠 - Java (0) | 2020.08.25 |
---|---|
[2020 KAKAO BLIND RECRUITMENT][문자열 처리] 괄호 변환 - Java (0) | 2020.08.24 |
[2020 KAKAO BLIND RECRUITMENT][문자열 처리] 문자열 압축 - Java (0) | 2020.08.24 |
[2017 카카오코드 예선][BFS] 카카오프렌즈 컬러링북 - Java (0) | 2020.08.15 |
[Summer/Winter Coding(2019)][시뮬레이션] 종이접기 - Java (0) | 2020.06.23 |