1. 문제정의
한 변의 길이와 2개의 숫자 배열이 주어지는데, 각 배열의 숫자들을 이진수로 변경했을 때 비트연산 or를 하여 최종적으로 1일경우 #, 0일 경우 " "로 바꾸어서 문자열로 출력 해야 한다.
2. 내가한시도
문제를 읽고 비트연산이라는 것을 알아채고 Integer에서 제공해주는 toBinaryString 메서드를 이용해서 숫자들을 이진수문자열로 변경하였다.
이후 1은 "#"으로 replaceAll 해주었고, 0은 " "으로 replaceAll 해주었다.
3. code
public class Solution {
public static String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for (int i = 0; i < n; i++) {
/*
* 2진수로 바꿔서 #과 " "로 변경해줌
*/
String s = Integer.toBinaryString(arr1[i] | arr2[i]);
s = s.replaceAll("1", "#");
s = s.replaceAll("0", " ");
String length = "%" + n + "s";
answer[i] = String.format(length, s);
}
return answer;
}
}
4. 깨달은 점
비트연산이라는 것만 알면 간단한 문제 였다. 직접 toBinaryString을 호출해서 String.format을 쓰게 되면 런타임 오류가 발생했는데, 그 문제의 원인을 알아내지 못한게 아쉽다.
참조
https://school.programmers.co.kr/learn/courses/30/lessons/17681
'프로그래밍 > 알고리즘 문제풀이' 카테고리의 다른 글
[pg] 프로그래머스 두 원사이의 정수 쌍 (0) | 2023.08.09 |
---|---|
[pg] 프로그래머스 요격시스템 (0) | 2023.08.09 |
[pg] 프로그래머스 다트게임 (0) | 2023.08.08 |
[pg] 프로그래머스 실패율 (0) | 2023.08.08 |
[pg] 프로그래머스 키패드 누르기 (0) | 2023.08.02 |