hoon DevLog

[Java] 프로그래머스 비밀지도 자바 본문

코딩테스트/프로그래머스

[Java] 프로그래머스 비밀지도 자바

개발한기발자 2022. 6. 22. 11:24
반응형

문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/17681

 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr


[나의 풀이]


  
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] = String.format("%0"+n+"d",Long.parseLong(Integer.toBinaryString(arr1[i] | arr2[i])));
answer[i] = answer[i].replace("0", " ");
answer[i] = answer[i].replace("1", "#");
}
return answer;
}
}

[다른 사람의 풀이]


  
class Solution {
public String makeSharp(int n, int m) {
if(n == 0) {
if( m > 0) {
String str = "";
for(int i = 0; i < m; i++) {
str += " ";
}
return str;
} else return "";
} else {
return n % 2 == 0 ? makeSharp(n/2, m-1) + " " : makeSharp(n/2, m-1) + "#";
}
}
public String[] solution(int n, int [] arr1, int [] arr2) {
String [] answer = new String[n];
int [] secretMap = new int[n];
for(int i = 0; i < n; i++) {
secretMap[i] = arr1[i] | arr2[i];
answer[i] = makeSharp(secretMap[i], n);
}
return answer;
}
}

[정리]

- String.format("%0"+n+"d", 표현할 데이터 타입) : 표현할 데이터 타입을 n자릿수로 표현

- Integer.toBinaryString으로 2진수로 변환

- | 연산 : 두 수의 OR연산

- 재귀 함수를 통해 2진수 변환 없이, 2로 나누어 떨어지는 경우 바로 공백으로 치환하며, 배열에 비밀지도를 한 번에 그리며 출력...

 

개인피셜 난이도 : ★☆☆

평상시에 잘 쓰지 않는 함수들이 있어,

데이터 값 처리하는 부분이 원활하지 않았다.

재귀 함수는.... 정말 계속 접해보는 수밖에 없는 것 같다...

남의 코드를 보면 이해가 되지만,

정작 내가 코딩하지 못하는 현실...

 

계속해서 코드를 들여다보고,

리뷰하며 익숙하게 만드는 수 밖에.

 

끝.

728x90
반응형