알고리즘/PROGRAMMERS
비밀지도(Lv.1)
현대타운301
2024. 3. 22. 19:31

문제 설명
입출력 예시
요약
2진수 형태로 변환 후 합치기
풀이
접근 방식
1. 2진수 형태로 변환
→ toBinaryString()을 통해 decimal to binary 변환
2. 정사각형 배열의 크기만큼 빈공간은 공백으로 채우기
→ StringBuilder의 insert() 메소드를 통해 문자열에 문자 채우기
코드리뷰
import java.util.*;
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String s1 = "";
String s2 = "";
List<String> list = new ArrayList<>();
for(int i = 0; i < arr1.length; i++) {
s1 = Integer.toBinaryString(arr1[i]); // 10진수 → 2진수 변환
s2 = Integer.toBinaryString(arr2[i]);
while(s1.length() < n) { // 문자열 앞에 공백으로 채우기
StringBuilder sb = new StringBuilder(s1);
s1 = String.valueOf(sb.insert(0, " "));
}
while(s2.length() < n) {
StringBuilder sb = new StringBuilder(s2);
s2 = String.valueOf(sb.insert(0, " "));
}
String s3 = "";
for(int j = 0; j < s1.length(); j++) {
if(s1.charAt(j) == '1' || s2.charAt(j) == '1') { // 각 문자열의 같은 인덱스에 위치한 문자끼리 비교
s3 += "#"; // 하나라도 1이면 '#'
} else {
s3 += " "; // 둘 다 0이면 공백
}
}
list.add(s3);
}
String[] answer = new String[list.size()];
for(int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}