문제
https://school.programmers.co.kr/learn/courses/30/lessons/17681
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
n x n의 크기의 지도가 두 개 주어지면, 이를 합쳐서 하나의 지도로 만들어야 한다.
지도의 열의 정보는 숫자로 주어지며, 이 숫자를 이진수로 변환했을 때 1이면 해당 열에서 #, 0이면 공백이라는 의미를 가진다.
풀이
두 지도의 열 정보를 이진수로 변환하여 행별로 OR 비트 연산을 적용해준다.
변환하여 얻은 행별 정보를 #과 공백으로 변환해주면 된다.
정수를 이진수로 변환하는 메서드는 `Integer.toBinaryString(int)`이다. 해당 메서드는 정수를 문자열 타입의 이진수로 반환한다.
이진수의 맨 왼쪽 자릿수가 0일 경우 처리를 너무 단순하게 생각해 시간이 오래 걸렸다.
최대한 엣지 케이스 처리를 꼼꼼하게 하는 습관을 들여야겠다.
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for (int i = 0; i < arr1.length; i++) {
int orOperation = arr1[i] | arr2[i];
String binary = Integer.toBinaryString(orOperation);
StringBuilder sb = new StringBuilder();
if (binary.length() < n) {
for (int k = 0; k < n - binary.length(); k++) {
sb.append(" ");
}
}
for (int j = 0; j < binary.length(); j++) {
if (binary.charAt(j) == '1') {
sb.append("#");
} else if (binary.charAt(j) == '0') {
sb.append(" ");
}
}
answer[i] = sb.toString();
}
return answer;
}
}'Problem Solving > 프로그래머스' 카테고리의 다른 글
| [프로그래머스/Java] N진수 게임 (feat. Java 진법 변환) (1) | 2025.05.23 |
|---|---|
| [프로그래머스/Java] 뉴스 클러스터링 (1) | 2025.05.22 |
| [프로그래머스/Java] 튜플 (0) | 2025.05.19 |
| [프로그래머스/Java] 캐시 (0) | 2025.05.19 |
| [프로그래머스/Java] 숫자 문자열과 영단어 (0) | 2025.05.14 |
