https://school.programmers.co.kr/learn/courses/30/lessons/17681?language=java
풀이
더보기
이번 문제도 혀가 긴 문제임. 근데 좀 많이 긴.
ㅋㅋㅇ블라인드 테스트 전에도 해봤지만 진짜 혀가 많이 깁니다..
그냥 결국 두 문자를 이진법으로 변환해서 -> 값을 비교해서 하나씩 문자열로 변경하면 되는 문제임...
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for (int i = 0; i < arr1.length; i++) {
String binaryString1 = Integer.toBinaryString(arr1[i]);
String binaryString2 = Integer.toBinaryString(arr2[i]);
String mapPasswordString1 = "0".repeat(n - binaryString1.length()) + binaryString1;
String mapPasswordString2 = "0".repeat(n - binaryString2.length()) + binaryString2;
String[] splitPassword1 = mapPasswordString1.split("");
String[] splitPassword2 = mapPasswordString2.split("");
for (int j = 0; j < splitPassword1.length; j++) {
if (!(splitPassword1[j].equals(splitPassword2[j]) && splitPassword1[j].equals("0"))) {
splitPassword1[j] = "#";
} else {
splitPassword1[j] = " ";
}
}
String arrayToString = String.join("", splitPassword1);
answer[i] = arrayToString;
}
return answer;
}
}
++) 함수에 바이너리라고 떡하니 적혀있는데도 이 값을 바이너리하지 않게 처리해버림. 통과는 됐는데 아쉬움.
남들 풀이 보니까 그냥
result[i] = Integer.toBinaryString(arr1[i] | arr2[i]);
그냥 이렇게 바이너리값 비교해서 or이니까, 0을 false, 1을 true로 인식해서 알아서 둘 중 하나라도 1이 있으면 반드시 1을 리턴하게 되니 0만 남게 되더라. 여기서 바로 리플레이스 해서 리턴하던데, 그냥 이건 내가 실무에 찌들어서 바이너리한 값을 생각하지 못한 내 잘못.. ^-ㅠ 알고리즘 공부가 부족하다.
반응형
'스터디(programmers)' 카테고리의 다른 글
Java] 프로그래머스 lv.1, 저주의 숫자 3 (0) | 2023.03.20 |
---|---|
Kotlin] 프로그래머스 lv.2, 기능 개발 (0) | 2023.03.20 |
Kotlin] 프로그래머스 lv.1, 로또의 최고 순위와 최저 순위 (0) | 2023.03.01 |
Kotlin] 프로그래머스 lv.1, 가장 가까운 같은 글자 (0) | 2023.02.22 |
Kotlin] 프로그래머스 lv.1, 명예의 전당 (1) (0) | 2023.02.15 |