1. 시간이 빠른 풀이
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
StringBuilder sb;
for(int i =0 ;i < n; i++){
String s1 = Integer.toBinaryString(arr1[i]);
String s2 = Integer.toBinaryString(arr2[i]);
if(s1.length() < n) s1 = "0".repeat(n - s1.length()) + s1;
if(s2.length() < n) s2 = "0".repeat(n - s2.length()) + s2;
sb = new StringBuilder();
for(int j = 0 ; j<n ; j++){
if(s1.charAt(j) == '1' || s2.charAt(j) == '1') sb.append("#");
else sb.append(" ");
}
answer[i] = sb.toString();
}
return answer;
}
}
2. 가독성 높은 풀이
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
StringBuilder sb;
for(int i =0 ;i < n; i++){
answer[i] = Integer.toBinaryString(arr1[i] | arr2[i]);
answer[i] = String.format("%" + n + "s", answer[i])
.replace('1', '#')
.replace('0', ' ');
}
return answer;
}
}
3. 다른 분 풀이
변수로 두는 것보다 상수로 놓고 자르는 게 훨씬 빠르다는 이점이 있다.
그러나 해당 풀이는 StringBuilder를 사용할 수 없는 풀이이다.
substring(), replaceAll() 함수 등은 String에만 존재하는 함수이다.
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
String temp;
for(int i = 0 ; i < n ; i++){
temp = String.format("%16s", Integer.toBinaryString(arr1[i] | arr2[i]));
temp = temp.substring(temp.length() - n);
temp = temp.replaceAll("1", "#");
temp = temp.replaceAll("0", " ");
answer[i] = temp;
}
return answer;
}
}
'코딩테스트 > Programmers' 카테고리의 다른 글
[프로그래머스] 기사단원의 무기 (1) | 2025.03.02 |
---|---|
[프로그래머스] 포켓몬 (0) | 2025.03.01 |
[프로그래머스] k번째수 (1) | 2025.02.28 |
[프로그래머스] 푸드 파이트 대회 (0) | 2025.02.28 |
[프로그래머스] 숫자 문자열과 영단어 (0) | 2025.02.28 |