728x90
반응형
2022.01.24
80번째 포스팅
입사 323일차.
코테 문제풀이 11주차 2번 문제
0. 문제
① 2018 KAKAO BLIND RECRUITMENT: [1차] 비밀지도
② 설명
문제설명 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.
입력 형식입력으로 지도의 한 변 크기 n 과 2개의 정수 배열 arr1, arr2가 들어온다.
출력 형식원래의 비밀지도를 해독하여 '#', 공백으로 구성된 문자열 배열로 출력하라. |
③ 링크
1. 접근방법
생각해낸 방법은 1가지
① 2진수를 10진수로 변환 후, 더한 값을 변환
2. 풀이
① 접근방법 : ①
② 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
import java.util.*;
class Solution {
/*
* 시작시간 : 19:20
* 종료시간 : 19:51
*/
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = treasureMap(n, arr1, arr2);
return answer;
}
public String[] treasureMap(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
List<String> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
// 1. 10진수 -> 2진수 변환
String toBinary1 = Integer.toBinaryString(arr1[i]);
String toBinary2 = Integer.toBinaryString(arr2[i]);
// 2. 계산한 값의 자릿수가 맞지 않을 경우, 0을 왼쪽에 추가
long binaryLine = Long.parseLong(toBinary1) + Long.parseLong(toBinary2);
String strFormatter = String.format("%0" + n + "d", binaryLine);
// 3. 계산한 값의 각 자릿수마다 0보다 큰지 아닌지 비교
// 3-1. 0보다 크면 '#'을, 0이면 ' '을 리턴
String line = "";
for (int j = 0; j < strFormatter.length(); j++) {
if(strFormatter.charAt(j) > '0') { line += "#"; }
else { line += " "; }
}
list.add(line);
}
for (int i = 0; i < n; i++) {
answer[i] = list.get(i);
}
return answer;
}
}
|
cs |
3. 결과
4. 주의사항
① 각 이진법을 더할 때, int의 범위를 넘어가는 케이스가 있기 때문에 long을 사용해야 한다.
728x90
반응형
'코딩테스트' 카테고리의 다른 글
[코테/JAVA]깊이/너비 우선 탐색(DFS/BFS) : 타겟 넘버 (0) | 2022.02.13 |
---|---|
[코테/JAVA] 그래프: 가장 먼 노드 (2) | 2022.02.06 |
[코테/JAVA] 2022 KAKAO BLIND RECRUITMENT : 신고 결과 받기 (0) | 2022.01.23 |
[코테/JAVA] 연습문제 : 문자열 내 마음대로 정렬하기 (2) | 2022.01.03 |
[코테/JAVA] 연습문제 : 문자열 내 p와 y의 개수 (0) | 2022.01.02 |
댓글