🔗 문제 링크

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


👨🏻‍💻 내가 작성한 코드

import java.util.*;
class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];
        String[] strArr1 = new String[n];
        strArr1 = changeBinary(n, arr1);
        
        String[] strArr2 = new String[n];
        strArr2 = changeBinary(n, arr2);
        
        for (int i=0;i<n;i++){
            StringBuilder sb = new StringBuilder();
            for (int j=0;j<n;j++){
                if (strArr1[i].charAt(j) =='1' || strArr2[i].charAt(j) =='1')
                    sb.append("#");
                else sb.append(" ");
            }
            answer[i] = sb.toString();
        }

        
        return answer;
    }
    
    
    public String[] changeBinary(int n, int[] arr1) {
        String[] binaryStr = new String[n];
        for (int i = 0; i < n; i++) {
            String binary = Integer.toBinaryString(arr1[i]);
            if(binary.length() < n) {
                StringBuilder sb = new StringBuilder(binary);
                while (sb.length() < n){
                    sb.insert(0, '0');
                }
                binaryStr[i] = sb.toString();   
            }
            else binaryStr[i] = binary;  
        }
        return binaryStr;
    }
}


📝 결론

아직도 String, StringBuilder의 메서드에 대해 헷갈린다. 메서드들을 확실하게 알고 넘어가도록 하자! 또한 이번 문제를 풀며 Java에서 제공하는 10진수를 2진술 변환해주는 Integer의 method를 알게 되었다. 이것도 외우고 넘어가도록 하자!!

  • String binary = Integer.toBinaryString(10진수);
    위의 method를 사용하면 10진수를 2진수 String으로 쉽게 변경 가능하다.
  • StringBuilder, String의 문자열 길이는 length()메서드를 사용!
    ※ length()에는 둘 다 괄호가 붙는다!
  • StringBuilder에서 문자를 붙일 때는 insert와() append() 메서드가 있다.
    • insert()메서드는 붙이는 위치를 지정할 수 있다.
      insert(문자를 붙일 위치, 붙일 문자)
    • append()메서드는 무조건 문자열의 맨 뒤에 문자가 들어가게 된다.
      insert(붙일 문자)
profile
블로그 이전했습니다. -> https://seongwon.dev/

0개의 댓글