[1차]비밀지도

이준경·2021년 5월 9일
0

<나의풀이>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];
        
        for(int i=0; i<n; i++){
            String a1 = Integer.toBinaryString(arr1[i]);
            String a2 = Integer.toBinaryString(arr2[i]);
            
            for(int j=a1.length(); j<n; j++){
                   a1 = "0"+a1;
            }
            
            for(int j=a2.length(); j<n; j++){
                   a2 = "0"+a2;
            }
            
            answer[i] = "";
            for(int j=0; j<n; j++){
                if(a1.charAt(j)=='0' && a2.charAt(j)=='0')
                    answer[i]+=" ";
                else
                    answer[i]+="#";
            }
            
        }
        
        return answer;
    }
}
cs
  1. arr1, arr2를 2진법으로 변환
  2. 각각의 길이가 주어진 길이 n보다 작으면 앞에 0 추가
  3. 둘의 각 자리를 비교하여 둘다 0일경우 asnwer[i]에 " " 대입. 아니라면 "#" 대입
  4. 반복 후 answer 반환

<다른 사람 풀이>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
  public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] result = new String[n];
        for (int i = 0; i < n; i++) {
            result[i] = Integer.toBinaryString(arr1[i] | arr2[i]);
        }
 
        for (int i = 0; i < n; i++) {
            result[i] = String.format("%" + n + "s", result[i]);
            result[i] = result[i].replaceAll("1""#");
            result[i] = result[i].replaceAll("0"" ");
        }
 
        return result;
    }
}
 
cs
  1. 비교연산자 | 를 이용함.
  2. format을 이용하여 s포함하여 10글자 만들고 result[i]에 대입.
  3. 1이면 "#", 0이면 " "로 치환.
  4. 반복 후 answer 반환

0개의 댓글

관련 채용 정보