https://programmers.co.kr/learn/courses/30/lessons/17681
문제 분석
- 입력받은 배열 두 개를 활용하여 정답 배열을 만들어내는 문제이다.
- 10진수로 입력받은 숫자들을 Integer.toBinaryString()함수를 통해 2진수로 변경하여 암호를 해독한다.
문제 풀이
1. 10진수 n자리가 들어있는 배열 두 개를 for문을 통해 각 자리별로 한 줄씩 처리한다.
2. 10진수는 Integer.toBinaryString()함수를 통해 2진수로 변경하고, makeEqual이라는 함수를 생성하여 n자리 수로 맞춰준다. (n이 5고 2진수로 변경한 값이 1인 경우 00001로 변경시킨다)
3. 만약 양쪽 배열에서 각 자리의 숫자가 모두 0인 경우 공백이기때문에 " "처리하고, 아닌 경우 벽이기때문에 "#"으로 처리한다.
4. 각 자리별로 계산을 완료하면 정답 배열에 넣고 리턴한다.
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for(int i=0;i<n;i++){
String map1 = Integer.toBinaryString(arr1[i]);
String map2 = Integer.toBinaryString(arr2[i]);
String newMap1 = makeEqual(n, map1);
String newMap2 = makeEqual(n, map2);
String tempAnswer = "";
for(int j=0;j<n;j++){
if(newMap1.charAt(j)=='0' && newMap2.charAt(j)=='0'){ // 공백
tempAnswer += " ";
}else{ // 벽
tempAnswer += "#";
}
}
answer[i] = tempAnswer;
}
return answer;
}
// 자리 수를 맞춰주는 함수
static String makeEqual(int n, String map){
String temp = "";
for(int i=0;i<n-map.length();i++){
temp += "0";
}
temp += map;
return temp;
}
}
'Algorithm > programmers' 카테고리의 다른 글
programmers 나머지가 1이 되는 수 찾기 (0) | 2022.02.18 |
---|---|
programmers 부족한 금액 계산하기 (0) | 2022.02.18 |
programmers DATETIME에서 DATE로 형 변환 (0) | 2022.02.17 |
programmers 오랜 기간 보호한 동물(2) (0) | 2022.02.17 |
programmers 중성화 여부 파악하기 (0) | 2022.02.17 |