Skip to content

Commit a765366

Browse files
committed
비밀지도 풀이완료
1 parent aec02a4 commit a765366

4 files changed

Lines changed: 112 additions & 1 deletion

File tree

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@
1717
|<b style="color: #f6d365;">숫자문자열과영단어</b> <br/> 문제링크: https://programmers.co.kr/learn/courses/30/lessons/81301?language=java <br/> 1차풀이 링크: https://github.com/Googleok/coding_test_programmers/blob/main/src/programmers/level1/week_05/solution002/Solution002.java <br/> 2차풀이 링크 https://github.com/Googleok/coding_test_programmers/blob/main/src/programmers/level1/week_05/solution002/Solution002R.java|
1818
|<b style="color: #f6d365;">내적</b> <br/> 문제링크: https://programmers.co.kr/learn/courses/30/lessons/70128?language=java <br/> 1차풀이 링크: https://github.com/Googleok/coding_test_programmers/blob/main/src/programmers/level1/week_05/solution003/Solution003.java <br/> 2차풀이 링크 https://github.com/Googleok/coding_test_programmers/blob/main/src/programmers/level1/week_05/solution003/Solution003R.java|
1919
|<b style="color: #f6d365;">음양더하기</b> <br/> 문제링크: https://programmers.co.kr/learn/courses/30/lessons/76501?language=java <br/> 1차풀이 링크: https://github.com/Googleok/coding_test_programmers/blob/main/src/programmers/level1/week_05/solution004/Solution004.java <br/> 2차풀이 링크 https://github.com/Googleok/coding_test_programmers/blob/main/src/programmers/level1/week_05/solution004/Solution004R.java|
20-
|<b style="color: #f6d365;">두개뽑아서더하기</b> <br/> 문제링크: https://programmers.co.kr/learn/courses/30/lessons/68644?language=java <br/> 1차풀이 링크: https://github.com/Googleok/coding_test_programmers/blob/main/src/programmers/level1/week_06/solution001/Solution001.java <br/> 2차풀이 링크 https://github.com/Googleok/coding_test_programmers/blob/main/src/programmers/level1/week_06/solution001/Solution001R.java|
20+
|<b style="color: #f6d365;">두개뽑아서더하기</b> <br/> 문제링크: https://programmers.co.kr/learn/courses/30/lessons/68644?language=java <br/> 1차풀이 링크: https://github.com/Googleok/coding_test_programmers/blob/main/src/programmers/level1/week_06/solution001/Solution001.java <br/> 2차풀이 링크 https://github.com/Googleok/coding_test_programmers/blob/main/src/programmers/level1/week_06/solution001/Solution001R.java|
21+
|<b style="color: #f6d365;">비밀지도</b> <br/> 문제링크: https://programmers.co.kr/learn/courses/30/lessons/17681?language=java <br/> 1차풀이 링크: https://github.com/Googleok/coding_test_programmers/blob/main/src/programmers/level1/week_06/solution002/Solution002.java <br/> 2차풀이 링크 https://github.com/Googleok/coding_test_programmers/blob/main/src/programmers/level1/week_06/solution002/Solution002R.java|
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package programmers.level1.week_06.solution002;
2+
3+
import java.util.Arrays;
4+
5+
public class Solution002 {
6+
public static void main(String[] args) {
7+
Solution002 sol = new Solution002();
8+
int n = 5;
9+
int[] arr1 = { 9, 20, 28, 18, 11 };
10+
int[] arr2 = { 30, 1, 21, 17, 28 };
11+
System.out.println(Arrays.toString(sol.solution(n, arr1, arr2)));
12+
}
13+
14+
public String[] solution(int n, int[] arr1, int[] arr2) {
15+
String[] answer = new String[n];
16+
for (int i = 0; i < n; i++) {
17+
String a = Integer.toBinaryString(arr1[i]);
18+
String b = Integer.toBinaryString(arr2[i]);
19+
a = fillZero(n, a);
20+
b = fillZero(n, b);
21+
22+
String pass = "";
23+
for (int j = 0; j < a.length(); j++) {
24+
if (a.charAt(j) == '0' && b.charAt(j) == '0') {
25+
pass += " ";
26+
continue;
27+
}
28+
pass += "#";
29+
}
30+
answer[i] = pass;
31+
}
32+
return answer;
33+
}
34+
35+
public String fillZero(int n, String num) {
36+
return "0".repeat(n - num.length()) + num;
37+
}
38+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package programmers.level1.week_06.solution002;
2+
3+
import java.util.Arrays;
4+
5+
public class Solution002R {
6+
public static void main(String[] args) {
7+
Solution002R sol = new Solution002R();
8+
int n = 6;
9+
int[] arr1 = { 46, 33, 33, 22, 31, 50 };
10+
int[] arr2 = { 27, 56, 19, 14, 14, 10 };
11+
System.out.println(Arrays.toString(sol.solution(n, arr1, arr2)));
12+
}
13+
14+
public String[] solution(int n, int[] arr1, int[] arr2) {
15+
String[] answer = new String[n];
16+
for (int i = 0; i < n; i++) {
17+
answer[i] = Integer.toBinaryString(arr1[i] | arr2[i]);
18+
}
19+
20+
for (int i = 0; i < n; i++) {
21+
answer[i] = String.format("%" + n + "s", answer[i]);
22+
answer[i] = answer[i].replaceAll("1", "#");
23+
answer[i] = answer[i].replaceAll("0", " ");
24+
}
25+
return answer;
26+
}
27+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
###### 문제 설명
2+
3+
비밀지도
4+
----
5+
6+
네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.
7+
8+
1. 지도는 한 변의 길이가 `n`인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다.
9+
2. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다.
10+
3. "지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다.
11+
4. 암호화된 배열은 지도의 각 가로줄에서 벽 부분을 `1`, 공백 부분을 `0`으로 부호화했을 때 얻어지는 이진수에 해당하는 값의 배열이다.
12+
13+
![secret map](http://t1.kakaocdn.net/welcome2018/secret8.png "Secret Map")
14+
15+
네오가 프로도의 비상금을 손에 넣을 수 있도록, 비밀지도의 암호를 해독하는 작업을 도와줄 프로그램을 작성하라.
16+
17+
### 입력 형식
18+
19+
입력으로 지도의 한 변 크기 `n` 과 2개의 정수 배열 `arr1`, `arr2`가 들어온다.
20+
21+
* 1 ≦ `n` ≦ 16
22+
* `arr1`, `arr2`는 길이 `n`인 정수 배열로 주어진다.
23+
* 정수 배열의 각 원소 `x`를 이진수로 변환했을 때의 길이는 `n` 이하이다. 즉, 0 ≦ `x` ≦ 2n - 1을 만족한다.
24+
25+
### 출력 형식
26+
27+
원래의 비밀지도를 해독하여 `'#'`, `공백`으로 구성된 문자열 배열로 출력하라.
28+
29+
### 입출력 예제
30+
31+
**매개변수**|****
32+
:-----:|:-----:
33+
n|5
34+
arr1|[9, 20, 28, 18, 11]
35+
arr2|[30, 1, 21, 17, 28]
36+
출력|["#####","# # #", "### #", "# ##", "#####"]
37+
38+
**매개변수**|****
39+
:-----:|:-----:
40+
n|6
41+
arr1|[46, 33, 33 ,22, 31, 50]
42+
arr2|[27 ,56, 19, 14, 14, 10]
43+
출력|["######", "### #", "## ##", " #### ", " #####", "### # "]
44+
45+
[해설 보러가기](http://tech.kakao.com/2017/09/27/kakao-blind-recruitment-round-1/)

0 commit comments

Comments
 (0)