20220202_알고리즘

Minseok-Choi·2022년 2월 2일
0

알고리즘

목록 보기
10/13
post-thumbnail

프로그래머스_비밀지도

  • 비트연산으로 문제를 해결했다.
  • 다른 사람의 풀이를 보면, Integer.toBinaryString메서드를 통해서 이진수로 변환해서 숫자를 기호로 변경시키는 방법으로 풀이했다.
  • 풀이 하면서 숫자를 이진법으로 변환했을 때, 지도의 칸 수의 범위보다 작은 이진수에 대해서 고민하는데 시간이 걸렸다.
  • 나는 반복횟수를 숫자가 0이되면 종료시키는 식으로 하지않고 반복횟수를 정해주는 방법으로 풀이했고, 다른 사람의 풀이에는 String.format으로 문자열이 차지하는 길이를 증가시켰다.
class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
       String[] answer = new String[n];

        for (int i = 0; i < n ; i++) {
            answer[i] = drawMap(n, orNumber(arr1[i], arr2[i]));
        }
        return answer;
    }
	// #이 표시된 칸을 모두 합하기
    public int orNumber(int num1, int num2) {
        return num1 | num2;
    }

    public String drawMap(int count, int number) {
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < count; i++) {
            if((number & 1) == 1) {
                stringBuilder.append("#");
            } else {
                stringBuilder.append(" ");
            }
            number = (number >> 1);
        }
        return stringBuilder.reverse().toString();
    }
}
profile
차곡차곡

0개의 댓글

Powered by GraphCDN, the GraphQL CDN