https://school.programmers.co.kr/learn/courses/30/lessons/17681
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
class Solution {
public static String toBinary(int n, int num) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < n; i++) {
sb.append(num%2);
num = num/2;
}
return sb.reverse().toString();
}
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for (int i=0; i < n; i++) {
StringBuilder tmp_string = new StringBuilder();
for (int j=0; j <n; j++){
if ((toBinary(n, arr1[i]).charAt(j) == '0') && (toBinary(n, arr2[i]).charAt(j) == '0')) {
tmp_string.append(' ');
} else {
tmp_string.append('#');
}// end if
}// end inner for
answer[i] = tmp_string.toString();
}// end outer fo
return answer;
}
}
- 10진수를 2진수 String으로 변환하는 메서드 작성함
- StringBuiler(or StringBuffer)는 String과 다르므로 .toString()으로 변환해줄 것
- 생각나는대로 구현해보다 보니 길어짐
비트연산 활용(출제 의도)
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;
}
}
- Integer.toBinaryString()메서드로 이진수 변환
- OR(|) 비트연산하여 1이 있다면 1로 수정
- String.format() 메서드 활용해 16자리를 나타내는 String으로 저장
- String.substring() 활용해 주어지는 n 자리수까지 잘라내기
- String.replaceAll() 활용에 해당하는 문자 모두 바꿔줌
'Algorithm' 카테고리의 다른 글
[Programmers/Java] 추억 점수 (0) | 2025.03.28 |
---|---|
[Programmers/Java] 콜라 문제 (0) | 2025.03.26 |
[Programmers/Java] 문자열 내 마음대로 정렬하기 (0) | 2025.03.25 |
[Programmers/Java] 푸드 파이트 대회 (0) | 2025.03.21 |
[Programmers/Java] 숫자 문자열과 영단어 (0) | 2025.03.20 |