CoDream

[JAVA] 프로그래머스 > 코딩테스트 연습 > 2018 KAKAO BLIND RECRUITMENT > [1차] 비밀지도 (OR 비트연산자) 본문

JAVA/JAVA 예제

[JAVA] 프로그래머스 > 코딩테스트 연습 > 2018 KAKAO BLIND RECRUITMENT > [1차] 비밀지도 (OR 비트연산자)

코잠 2024. 3. 17. 09:37
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/17681


if문으로 작성하다가 막혀서 해설을 확인함.

해설에 적혀있는 비트연산자를 보게되었고, 비트연산자에 대해 살펴보았다.


비트연산자

  1. 비트 AND 연산자 (&):
    • 두 비트가 모두 1이면 결과는 1이고, 그렇지 않으면 0입니다.
  2. 비트 OR 연산자 (|):
    • 두 비트 중 하나 이상이 1이면 결과는 1이고, 둘 다 0이면 결과는 0입니다.
  3. 비트 XOR(배타적 논리합) 연산자 (^):
    • 두 비트가 서로 다르면 결과는 1이고, 같으면 결과는 0입니다.
  4. 비트 부정 연산자 (~):
    • 비트를 반전시킵니다. 1은 0으로, 0은 1로 변환됩니다.
  5. 왼쪽 시프트 연산자 (<<):
    • 지정된 수 만큼 비트를 왼쪽으로 이동시킵니다. 오른쪽에 새로 생성된 비트는 0으로 채워집니다.
  6. 오른쪽 시프트 연산자 (>>):
    • 지정된 수 만큼 비트를 오른쪽으로 이동시킵니다. 왼쪽에 새로 생성된 비트는 원래 값과 동일한 부호로 채워집니다.
  7. 부호 없는 오른쪽 시프트 연산자 (>>>):
    • 지정된 수 만큼 비트를 오른쪽으로 이동시킵니다. 왼쪽에 새로 생성된 비트는 항상 0으로 채워집니다.

 

 필요한 연잔자는 비트 OR 연산자 (|) 였고, OR연산자 사용방법에 대해 알아보았다.


class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
         String[] answer = new String[n];
       for(int i=0;i<n;i++){
            int result=arr1[i]|arr2[i];
             String binaryString = Integer.toBinaryString(result);
          
        binaryString = String.format("%" + n + "s", binaryString).replace(" ", "0");
        binaryString = binaryString.replace('1', '#').replace('0', ' ');
        answer[i] = binaryString;
       }
        return answer;
        
    }
}

OR 연산자 (|)  

int result=arr1[i]|arr2[i];

 > OR연산자를 이용해 배열 arr1과 arr2에 있는 숫자(2진수)를 비교해 두 비트 중 하나라도 1이면 결과는 1로, 둘 다 0이면 결과는 0이 나오게 됨.

 

Integer.toBinaryString

 > 주어진 정수를 이진수 문자열로 변환

 String binaryString = Integer.toBinaryString(result);

 > result 수를 이진수 String으로 변환함.

 

String.format

 문자열을 지정된 형식으로 포맷팅하는 메서드

.replace

 문자열에서 특정 문자나 문자열을 다른 문자나 문자열로 대체

binaryString = String.format("%" + n + "s", binaryString).replace(" ", "0");

 > 문자열의 길이를 n으로 맞추기위해

    이진수 문자열의 길이가 n보다 작으면, 남는 공간을 공백으로 채움.

    남은 공백을 0으로 대체하여 이진수 문자열의 길이를 n으로 맞춤.

 

binaryString = binaryString.replace('1', '#').replace('0', ' ');

 > 이진수 문자열에서 1을 '#'으로, 0을 공백으로 대체함.

728x90
반응형