반응형
[프로그래머스] [1차]비밀지도
https://programmers.co.kr/learn/courses/30/lessons/17681
문제접근
입력으로 정수로 된 배열 2개를 주고, 이 정수를 이진수로 변환하여서 둘 중 하나라도 1인곳이면, 벽으로 간주하는 문제이다.
처음에는 if문으로 하나하나 바꾸고 비교해볼 생각이였지만, 너무 오래걸리고 코드도 더러워서 문제해설을 보니 비트연산을 이용하라는 것이였다. 그래서 둘 중 하나라도 1인 곳이 벽으로 간주하는 것이기 때문에 OR연산을 이용하고 자바의 비트연산을 사용해 보았다.
Code
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for(int i = 0; i<n; i++){
String map = Integer.toBinaryString(arr1[i] | arr2[i]);
while(map.length()!=n){
map = "0"+map;
}
map = map.replace('0',' ');
answer[i] =map.replace('1','#');
}
return answer;
}
}
어려웠던 점/ 배운 점
Integer.toBinaryString 메소드를 이용해서 정수를 간편하게 이진수로 변경할 수 있었고, 비트연산도 간편하게 처리했다.
막혔던 점은 2번째 테스트케이스에서 틀렸다고 나온것이다. 자세히보니까 이진수의 자릿수가 n이여야 하는데 작은 값이 들어오면 앞에 0이 사라지는 것이 문제였다. 그래서 자릿수를 맞추기 위해서 while문으로 자릿수(길이)가 n일때까지 왼쪽에 0을 추가해주었다.
반응형
'Algorithm' 카테고리의 다른 글
[Algorithm/Java][BOJ] 1439번 뒤집기 (0) | 2022.01.16 |
---|---|
[Algorithm/Java][프로그래머스] 문자열 내 마음대로 정렬하기 (0) | 2022.01.11 |
[Algorithm/Java][프로그래머스] 3진법 뒤집기 (0) | 2021.09.05 |
[Algorithm/JAVA][프로그래머스] 실패율 (0) | 2021.09.04 |
[Algorithm/Java][프로그래머스] 직업군 추천하기 (0) | 2021.08.27 |