1. 문제
https://programmers.co.kr/learn/courses/30/lessons/17681?language=java
코딩테스트 연습 - [1차] 비밀지도
비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다
programmers.co.kr
2. 나의 풀이
import java.util.Arrays;
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String [arr1.length];
for(int i = 0; i < answer.length; i = i + 1) {
answer[i] = "";
}
String [] str1 = new String [arr1.length];
String [] str2 = new String [arr2.length];
for(int i = 0; i < arr1.length; i = i + 1) {
str1[i] = Integer.toBinaryString(arr1[i]);
str2[i] = Integer.toBinaryString(arr2[i]);
}
for(int i = 0; i < arr1.length; i = i + 1) {
for(int j = 1; j < n; j = j + 1) {
if(str1[i].length() == j) {
str1[i] = "0" + str1[i];
}
if(str2[i].length() == j) {
str2[i] = "0" + str2[i];
}
}
}
//System.out.println(Arrays.toString(str1));
for(int i = 0; i < answer.length; i = i + 1) {
for(int j = 0; j < n; j = j + 1) {
if(str1[i].substring(j, j + 1).equals("1") || str2[i].substring(j, j + 1).equals("1")) {
answer[i] += "#";
}else if(str1[i].substring(j, j + 1).equals("0") && str2[i].substring(j, j + 1).equals("0")) {
answer[i] += " ";
}
}
//System.out.println(Arrays.toString(answer));
}
return answer;
}
}
3. 다른 사람 풀이
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;
}
}
'알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
프로그래머스 코딩테스트 연습 - 연습문제 - 124 나라의 숫자 (0) | 2020.10.12 |
---|---|
프로그래머스 코딩테스트 연습 - 2018 KAKAO BLIND RECRUITMENT - [1차] 다트 게임 (0) | 2020.10.11 |
프로그래머스 코딩테스트 연습 - Summer/Winter Coding(~2018) - 예산 (0) | 2020.10.08 |
프로그래머스 코딩테스트 연습 - 연습문제 - 직사각형 별찍기 (0) | 2020.10.08 |
프로그래머스 코딩테스트 연습 - 연습문제 - x만큼 간격이 있는 n개의 숫자 (0) | 2020.10.07 |