https://school.programmers.co.kr/learn/courses/30/lessons/17681
문제 접근
정해진 배열 안에 숫자들을 이진법으로 만들어야 되는데 정답률이 높은 거 보고 바꿔주는 메서드가 있을 거 같아서 찾아봤다.
이 분 글을 보면 10진수를 2, 8, 16진수로 2, 8, 16진수를 다시 10진수로 바꿔줄 수 있다.
Integer.toBinaryString()으로 숫자를 이진수 문자열로 바꿔줄 수 있다.
변환된 이진수는 앞에 0이 없기 때문에 n의 크기에 맞춰 앞에 0을 추가
String 배열은 기본 값이 null이라서 ""로 초기화 해주고 이후엔 두 배열의 대조 후 1, 0에 따라 맞는 문자를 answer에 대입
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n]; // int 배열은 초기값이 0으로 되있으나 String 배열은 null이다.
for(int i=0; i<answer.length; i++) answer[i] = "";
String[] map1 = new String[n];
String[] map2 = new String[n];
// 이진수 변환 및 0 채워주기
for(int i=0; i<map1.length; i++) {
map1[i] = Integer.toBinaryString(arr1[i]);
map2[i] = Integer.toBinaryString(arr2[i]);
while(map1[i].length() < n) map1[i] = "0" + map1[i];
while(map2[i].length() < n) map2[i] = "0" + map2[i];
}
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
if(map1[i].charAt(j) == '1' ||
map2[i].charAt(j) == '1') {
answer[i] += "#";
}
else if(map1[i].charAt(j) == '0' &&
map2[i].charAt(j) == '0') {
answer[i] += " ";
}
}
}
return answer;
}
}
다른 사람 풀이
Integer.toBinaryString( | ) → 이렇게 쓰면 양 옆 중 하나만 1이어도 1을 반환해줌, 둘 다 0이어야 0 반환
Integer.toBinaryString( & ) → 이렇게 쓰면 양 옆 다 1이어야 1 반환, 하나만 0이어도 0 반환
이걸로 두 배열 대조를 한 번에 해결
String.format("%" + n + "s", result[i]); 이런 형태를 파이썬인가 C언어에서 본 거 같은데
원랜 String.format("%s", "Ah") 이런 형태면 %s 위치에 Ah가 들어간다.
이 분은 %와 s 사이에 n을 넣었는데 이건 총 자릿수 인듯
이 후에 1은 #, 0은 " "으로 바꿔주었음, 공백 칸은 원래 공백
class Solution{
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] result = new String[n];
for (int i = 0; i < n; i++) {
result[i] = Integer.toBinaryString(arr1[i] | arr2[i]); // 이걸로 1겹치는 곳 다 확인
}
for (int i = 0; i < n; i++) {
result[i] = String.format("%" + n + "s", result[i]); // % s 사이의 숫자는 총 자릿수
result[i] = result[i].replaceAll("1", "#");
result[i] = result[i].replaceAll("0", " ");
}
return result;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / 소수 찾기 / JAVA] (0) | 2023.03.22 |
---|---|
[프로그래머스 / 소수 만들기 / JAVA] (0) | 2023.03.21 |
[프로그래머스 / [1차] 다트 게임 / JAVA] (2) | 2023.03.19 |
[프로그래머스 / 완주하지 못한 선수 / JAVA / 해시] (1) | 2023.03.17 |
[프로그래머스 / 체육복 / JAVA / 탐욕법] (1) | 2023.03.16 |
댓글