728x90
▶ 문제
▶ 풀이방법
- 첫번째 풀이(2번째 케이스에서 오답 발생)
import java.util.*;
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
String[] arr = new String[n];
for(int i = 0; i < n; i++){ //두개의 지도 붙였을 때 OR값
arr[i] = Integer.toBinaryString(arr1[i] | arr2[i]);
}
Arrays.fill(answer, "");
for(int j = 0; j < n; j++){
for(int i = 0; i < arr[j].length(); i++){
char c = arr[j].charAt(i);
if(c == '1') answer[j] += "#";
else if(c == '0') answer[j] += " ";
}
}
System.out.println(Arrays.toString(answer));
return answer;
}
}
--> 겹친 지도의 결과 값이 전부 출력이 되야하기 때문에 지도 행의 길이는 n이여야함.
--> 나의 결과 값은 n(입력값, 지도 한변의 길이)는 6임에도 불구하고 5행만 출력됨. -> 나머지는 공백으로 채워야함
--> 공백자리 0으로 채워주려고 했는데 시간초과 계속 발생해서 다른사람이 푼 것 참고. (2중for문 사용하면 안될듯함.)
- 두번째 풀이
import java.util.*;
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for(int i = 0; i < n; i++){
answer[i] = Integer.toBinaryString(arr1[i] | arr2[i]); //arr1과 arr2의 2진수값 계산 후 저장
answer[i] = String.format("%"+n+"s", answer[i]); //answer[i]길이 n으로 다 맞춰줌.
answer[i] = answer[i].replaceAll("1", "#"); //1은 #으로 대체
answer[i] = answer[i].replaceAll("0", " "); //0은 공백으로 대체
}
return answer;
}
}
++너무 간단하다,,, 언제쯤 이렇게 간단하게 풀수 있을까..!!ㅜㅜ
▶ 문제를 풀면서 알게 된것.
- 10진수 정수를 2진수 string형태로 변환 : Integer.toBinaryString(10진수 정수 값);
- 문자열 형식 설정 : String.format();
- 문자열내 문자 대체 : 문자열 이름.replaceAll("대체 하고 싶은 문자", "대체할 문자");
728x90
'Algorithm > PROGRAMMERS[Java]' 카테고리의 다른 글
Lv1. 나머지가 1이 되는 수 찾기 (0) | 2022.04.17 |
---|---|
Lv1. 부족한 금액 계산하기 (0) | 2022.04.17 |
Lv1. 가운데 글자 가져오기 (0) | 2022.04.17 |
Lv1. 다트게임[카카오] (0) | 2022.04.17 |
Lv1. 같은 숫자는 싫어 (0) | 2022.04.17 |