class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = {};
// 한변의 길이가 지정되어 있기 때문에 n만큼 초기화
answer = new String[n];
for (int i = 0; i < n; i++) {
// 비트연산자로 변경
String binary1 = Long.toBinaryString(arr1[i]);
String binary2 = Long.toBinaryString(arr2[i]);
// 비트연산자 값을 숫자로 변환해서 합치고 다시 문자열로 변경
String sum = String.valueOf(Long.parseLong(binary1) + Long.parseLong(binary2));
// n의 길이로 맞춰야하기 때문에 합친 비트연산자 값의 크기를 비교 후 문자열 반복
sum = "0".repeat(n - sum.length()) + sum;
String[] change = String.valueOf(sum).split("");
String str = "";
for (int j = 0; j < n; j++) {
// 비트연산자는 0,1로만 되어 있는데 숫자를 합쳤기 때문에 2까지 있음
if (change[j].equals("1") || change[j].equals("2")){
str += "#";
}else {
str += " ";
}
}
answer[i] = str;
}
return answer;
}
}
비트연산자를 사용해 본 적도 없는데
17년도 카카오 신입 공채 1차 코딩테스트라길래 비트연산자 변형 방법만 찾아서 풀어본다 -_-
- 다른 사람 풀이
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] result = new String[n];
for (int i = 0; i < n; i++) {
result[i] = Integer.toBinaryString(arr1[i] | arr2[i]);
}
for (int i = 0; i < n; i++) {
result[i] = String.format("%" + n + "s", result[i]);
result[i] = result[i].replaceAll("1", "#");
result[i] = result[i].replaceAll("0", " ");
}
return result;
}
}
다른 분들 풀이를 보니 다들 replaceAll을 사용했던데 생각이 안나서 for문을 한번 더 돌렸다
'프로그래머스 > [프로그래머스 - JAVA] Lv.1' 카테고리의 다른 글
[프로그래머스 - JAVA] 숫자 문자열과 영단어 (0) | 2023.04.03 |
---|---|
[프로그래머스 - JAVA] 문자열 내 마음대로 정렬하기 (0) | 2023.04.03 |
[프로그래머스 - JAVA] 최소직사각형 (0) | 2023.04.03 |
[프로그래머스 - JAVA] 삼총사 (0) | 2023.04.02 |
[프로그래머스 - JAVA] 시저 암호 (0) | 2023.04.02 |
댓글