요르딩딩
프로그래머스 : [1차]비밀지도 (2진수, 비트연산) 본문
728x90
반응형
이번문제는 난이도가 1인 문제라 쉬운 문제였다. 다만 다 풀고난 후 다른사람들의 풀이를 보니 효과적으로 푸신 분들이 많아
정리하려고 한다.
내가 푼 방식의 포인트를 정리해보자.
1. 각 배열을 2진수로 표현하기
2. 모두 공백인 경우만 공백으로 간주하기
이렇게 두가지 포인트를 나는 직접 구현했지만, 몇몇 함수를 적용하면 효율적이면서 간단하게 구현할 수 있었다.
1. result[i] = Integer.toBinaryString(arr1[i] | arr2[i]);
이진수로 변환하여, 비트연산을 이용해 계산한다.
역시 문제를 다 풀었더라도 나보다 잘 푸신분들의 풀이를 참고하면, 배울점이 많이 있는것 같다.
앞으로도 쉬운문제일지라도 곱씹어 보는 시간을 가져보자
[내가 구현한 코드]
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
int[][] map1 = new int[n][n];
int[][] map2 = new int[n][n];
for (int i = 0; i < n; i++) {
int num = arr1[i];
int tmpN = n - 1;
while (num != 0) {
map1[i][tmpN--] = num % 2;
num = num / 2;
}
}
for (int i = 0; i < n; i++) {
int num = arr2[i];
int tmpN = n - 1;
while (num != 0) {
map2[i][tmpN--] = num % 2;
num = num / 2;
}
}
String s = "";
for (int i = 0; i < n; i++) {
s = "";
for (int j = 0; j < n; j++) {
if (map1[i][j] == 0 && map2[i][j] == 0) {
s += " ";
} else {
s += "#";
}
}
answer[i] = s;
}
return answer;
}
}
[다른사람이 구현한 코드]
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] result = new String[n];
String a = Integer.toBinaryString(arr1[0]);
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;
}
}
728x90
반응형
'[코딩테스트] > 문제풀이' 카테고리의 다른 글
프로그래머스 : 괄호변환 (String.CharAt(), 재귀) (0) | 2022.05.13 |
---|---|
프로그래머스 : 더 맵게 (우선순위 큐) (0) | 2022.05.13 |
프로그래머스 : 실패율 (0) | 2022.04.25 |
프로그래머스 : 방금그곡 (0) | 2022.04.20 |
프로그래머스 : 124나라 (규칙찾기) (0) | 2022.04.19 |
Comments