반응형
17681번
https://programmers.co.kr/learn/courses/30/lessons/17681?language=java
풀이
이 예시만 봐도 문제의 핵심을 알 수 있습니다.
문제의 핵심을 OR 연산 입니다.
두 이진수의 or 연산은 하나라도 참일 경우 참으로 인지하기 때문에 결과와 같은 값을 구할 수 있습니다.
1 or 0 = 1
0 or 1 = 1
비트 연산만 알고 있다면 쉽게 풀 수 있는 문제입니다.
- 풀이
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for(int i=0; i<n; i++) {
String orBinaryStr = Integer.toBinaryString(arr1[i] | arr2[i]);
while(orBinaryStr.length() < n) {
orBinaryStr = " "+orBinaryStr;
}
orBinaryStr = orBinaryStr.replaceAll("1", "#").replaceAll("0", " ");
answer[i] = orBinaryStr;
}
return answer;
}
}
원리만 알면 쉬우므로 핵심 몇 개만 설명하겠습니다.
✅ 비트 연산자 '|'
: OR 연산
✅ Integer.toBinaryString()
: 정수의 2진수를 String 타입으로 반환
✅ String replaceAll(String regex, String replacement)
: 문자열 내의 regex 를 replacement 로 치환합니다.
: 참고로 regex 에는 단순 문자열이 올 수도 있지만 정규식을 활용할 수도 있습니다.
✔️ 테스트 케이스 처리속도: 평균 1.5ms / 최대 2.87ms
반응형
'Algorithm > Java' 카테고리의 다른 글
프로그래머스 - 2016년 java (0) | 2022.07.03 |
---|---|
프로그래머스 - 나머지가 1이 되는 수 찾기 java :: 월간 코드 챌린지 시즌3 (0) | 2022.07.02 |
프로그래머스 [1차] 다트 게임 java :: 2018 KAKAO BLIND RECRUITMENT (0) | 2022.07.01 |
프로그래머스 - 나누어 떨어지는 숫자 배열 java (0) | 2022.07.01 |
프로그래머스 - 문자열 내 마음대로 정렬하기 java (0) | 2022.07.01 |