Java에서 10진수를 2진수로 변환하는 방법이 포함되어있다.
위 진수변환 관련 내용은 아래 글 참고.
자바 10진수 <-> 2진수, 8진수, 16진수 변환
자바 2진수, 8진수, 16진수 변환 시에는 Integer 클래스 API를 활용하면 편하다. (참고 : https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html) 10진수 -> 2진수, 8진수, 16진수 변환 1 2 3 4 5 6..
donggov.tistory.com
String 이진수 = Integer.toBinaryString(십진수값);
아래는 본인의 코드이다.
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
//지도 #
String[] map = new String[n];
for (int i = 0; i < n; i++) {
String val1 = Integer.toBinaryString(arr1[i]);
String val2 = Integer.toBinaryString(arr2[i]);
//자리수 맞추기
while(val1.length()<n){
val1 = '0' + val1;
}
while(val2.length()<n){
val2 = '0' + val2;
}
//0이면 공백, 하나라도 1이면 #
map[i]="";
for (int k = 0; k < n; k++) {
if (val1.charAt(k) == '0' && val2.charAt(k) == '0') {
map[i] += " ";
} else {
map[i] += "#";
}
}
}
return map;
}
}
map배열을 map[i]=""; 로 초기화하지 않으면 null값이 출력되어서 초기화를 진행했다.
자리수를 맞추는 방법으로 필자는 length()를 비교하여 반복문을 통해 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]);
}
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;
}
}
우선 첫번째 for문에서 바로 arr1[i] | arr2[i] 한 값을 OR연산자로 비교하면 2진수단위로 비교된다.
=> 원본 arr들간의 앞자리가 0이어서 비는 부분이 어느정도 보완된다.
=> 단, 테스트케이스2번의 6자리이지만 각각 5자리인(10110 | 01110)값은 결과값도 5자리이다.
=> 그래서 보완하는 점이 format이다.
두번째로 String.format()에 관한 부분이다.
result[i]의 형태를 "%5s"로 설정하면 그보다 작을경우 앞에 공백을 넣는다.
따라서
1) 어차피 공백인 부분은 치환안해도 공백이므로 내비둬도 된다.
2) OR연산자 값이 "0"으로 나온 부분은 공백으로 바꾸어야 하므로 replaceAll 메소드를 이용한다.
3) "#"으로 바꿔야하는 "1"부분도 2) 시행과 마찬가지 방법이다.
자세한 이론설명은..
format은 아래 링크를 참고하면 될 것 같다.
[Java] String.format 을 이용한 문자열 형식 설정하기
public static String format(String format, Object... args); public static String format(Locale l, String format, Object... args); String 의 static 메서드인 format 메서드는 문자열의 형식을 설정하는..
blog.jiniworld.me
'코딩테스트 > Java' 카테고리의 다른 글
(2020카카오) 문자열 압축 Java (0) | 2021.01.05 |
---|---|
(2018 카카오) [1차] 다트게임 Java (0) | 2020.12.30 |
(2019 카카오) 키패드 누르기 Java (0) | 2020.12.23 |
(2019 카카오) 실패율 Java (0) | 2020.12.21 |
(2019 카카오)크레인 인형뽑기 게임 Java (0) | 2020.12.18 |