[프로그래머스] 비밀지도[1차]

2020. 3. 25. 14:45프로그래머스/카카오

class Solution {
  public String[] solution(int n, int[] arr1, int[] arr2) {
      String[] answer = new String[n];
      
      for(int i=0; i<arr1.length; i++){
         String s = binaryString(arr1[i],arr1.length);
         String s2 = binaryString(arr2[i],arr2.length);
         String result="";
          
         for(int j=0; j<n; j++){
             
             if(s.charAt(j)=='1' || s2.charAt(j)=='1'){
                 result += Character.toString('#');
             }
             else{
                 result += " ";
             }
         }
        answer[i] = result;          
      }
      
      
      
      return answer;
  }
    
    public String binaryString(int num,int destLength){
        String a = "";
        while(num!=1){
            a = String.valueOf(num%2) + a;
            num = num/2;
        }
        a = "1" + a;
        while(a.length()!=destLength){
            a= "0" + a;
        }
        
        return a;
    }
}

 

Test Case : 1,3번 시간초과

 

수정코드

 

import java.util.*;

class Solution {
  public String[] solution(int n, int[] arr1, int[] arr2) {
      String[] answer = new String[n];
      
      for(int i=0; i<arr1.length; i++){
         String s = binaryString(arr1[i],arr1.length);
         String s2 = binaryString(arr2[i],arr2.length);
         String result="";
         for(int j=0; j<n; j++){
             if(s.charAt(j)=='1' || s2.charAt(j)=='1'){
                 result += Character.toString('#');
             }
             else{
                 result += " ";
             }
         }
        answer[i] = result;          
      }
      return answer;
  }
    
    public String binaryString(int num,int destLength){
        String a = Integer.toBinaryString(num); // 변경부분
        
        while(a.length()!=destLength){
            a= "0" + a;
        }
        
        return a;
    }
}

 

 숫자를 이진수로 바꾸어 문자열로 리턴해주는  toBinaryString(num) 메소드로 바꾸어주니 해결되었다.

직접 구현 할 줄 아는 것이 중요하지만, 급할때는 메소드를 많이 아는 것도 중요한 것 같다.