TIL 2023-01-31 항해99 D+23

황원준·2023년 1월 31일

hanghae99

목록 보기
21/24
post-thumbnail

1. 문제점

2. 시도 해본 것들

처음에 2차원배열로 생각하여 arr1과 arr2에 해당하는 배열을 통해서 정수를 추출해 직접 이진수로 변환하는 문제 풀이를 풀어보고자 했지만, 이진수로 변환후에 각 배열에 집어넣는 과정에서 조건등에 해당하는 코드를 작성하지 못하여 조원들에게 도움을 청하였다. 또한 이해가 되지 않는 부분이 있다보니 문제 진행하는데 어려운 부분이 있었다.

3. 해결법

class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];

        for (int i = 0; i < n; i++) {
            String format = "%" + n + "s";
            String binary = Integer.toBinaryString(arr1[i] | arr2[i]);
            answer[i] = String.format(format, binary);
            answer[i] = answer[i].replaceAll("1", "#");
            answer[i] = answer[i].replaceAll("0", " ");
        }

        return answer;
    }
}

우선 toBinaryString()이라는 메서드를 통해 이진법수로 변환이 가능하다. 각 배열의 원소들을 이진수로 변환한 뒤 or 비트논리연산 수행한다. 이후에 5자리의 문자열 형태로 포맷 변경, 5자리가 안되는 나머지는 공백으로 채운다. 이진법의 수 중 1과 0을 각각 "#"과 " ", 공백의 형태로 바꾼다.

4. 알게 된 점

  1. toBinaryString(int number) 메서드
    : 해당하는 참조변수 10진수를 2진수로 변환해주는 메서드
  2. 비트 논리 연산자 or, |
    : 두 비트 중 하나만 true이면 연산결과는 true
  3. String.format(String format, Object ...)
    : 리턴 되는 문자열의 형태를 지정하는 메소드
    : 서식 문자열의 앞에 %를 붙여 문자열에 사용하면 그 위치에 변수의 값을 형식화 하여 대입 가능
    String.format() 참고
profile
좋은 개발자가 되기 위해 노력 하는 개린이

0개의 댓글