티스토리 뷰
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/17681
2018 KAKAO BLIND RECRUITMENT 1차 Level 1 문제다.
< 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. >
라는 문제 조건을 보면 바로 비트 연산 중 OR 연산을 떠올릴 수 있다.
arr1[]과 arr2[]를 비트 연산 후 toBinaryString에 넣어 이진수 형태의 문자열로 변환한다.그리고 StringBuilder에 0이면 공백, 1이면 #을 추가해준다.완성된 StringBuilder를 ans[]에 넣으면 된다.이 때 2진수 문자열로 변환시 앞자리가 0인 경우 0으로 표시되지 않고 생략되므로 n자리의 문자열이 생성되지 않을 수 있다. (ex: 011110 인 경우 11110이 됨)그리고 StringBuilder에 (n - 2진수 문자열의 length)만큼 공백을 추가하여 무조건 6자리의 문자열이 ans에 들어가도록 해준다.
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] ans = new String[n];
StringBuilder sb = new StringBuilder();
for(int i=0;i<n;i++) {
String temp = Integer.toBinaryString(arr1[i] | arr2[i]);
sb.append(" ".repeat(n - temp.length()));
for(char c : temp.toCharArray())
if(c == '0')
sb.append(' ');
else
sb.append('#');
ans[i] = sb.toString();
sb.setLength(0);
}
return ans;
}
}
728x90
'algorithm > programmers' 카테고리의 다른 글
[프로그래머스/자바] 프렌즈4블록 풀이 - 2018 KAKAO BLIND RECRUITMENT (0) | 2022.11.30 |
---|---|
[프로그래머스/자바] 캐시 풀이 - 2018 KAKAO BLIND RECRUITMENT (0) | 2022.11.29 |
[프로그래머스/자바] 다트 게임 풀이 - 2018 KAKAO BLIND RECRUITMENT (0) | 2022.11.28 |
[프로그래머스/자바] 카드 짝 맞추기 풀이 - 2021 KAKAO BLIND RECRUITMENT (0) | 2022.11.28 |
[프로그래머스/자바] 자물쇠와 열쇠 풀이 - 2020 KAKAO BLIND RECRUITMENT (0) | 2022.11.25 |