Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 알고리즘
- 완전탐색
- 보이어무어
- 문자열
- 에라토스테네스의 체
- Stack
- 순열
- 어려웠던 문제
- 동적계획법
- 규칙찾기
- HashMap
- HashSet
- 메뉴리뉴얼
- 튜플
- pandas
- 완전 탐색
- fragment identifier
- Dynamic Programming
- 영문자 확인
- 조합
- Java
- dfs
- 점프와 순간이동
- 후위 표기법
- python
- 2017 카카오 코드
- 쿼드압축 후 개수세기
- 반복문
- 프로그래머스
- 최소공배수
Archives
- Today
- Total
csmoon1010의 SW 블로그
[200516] [1차]비밀지도 - 2018 KAKAO BLIND RECRUITMENT(level1) 본문
1. 문제이해
- arr1, arr2 : 지도 한 행의 벽, 공백 여부를 십진수로 나타낸 배열
- 벽 = 1 = "#", 공백 = 0 = " "으로 바꿔서 나타내기
2. 전략
(1) 이진수 변환 함수 : int[][] decToBin(int n, int[] arr)
- arr[i]가 1이 될 때까지 arr[i]%2의 값을 뒤에서부터 채워넣고 arr[i]/=2 수행
- 마지막 몫인 1 추가(단, arr[i] = 0으로 주어진 경우 제외!!)
- 앞에 남은 자리에 0으로 채워넣기
(2) 두 배열 겹치기 : 이중 for문 이용
- map1[i][j] == 0 && map2[i][j] == 0일 때는 공백을 추가, 아니면 "#"을 추가
3. 참고사항
- Integer 클래스의 진수 변환 함수 이용(단, String형태로 return) : Integer.toBinaryString(int i)
Integer.toBinaryString(int i); //2진수로 변환
Integer.toOctalString(int i); //8진수로 변환
Integer.toHexString(int i); //16진수로 변환
- 두 배열 겹치기 = 비트 연산자 OR과 같은 역할 --> 이진수변환과 연산을 한번에 처리할 수 있음
Integer.toBinaryString(arr1[i] | arr2[i]);
- String형태의 이진수 --> "#", " " : replaceAll("1", "#"), replaceAll("0", " ") 이용!!
4. 코드
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] = "";
//이진수 변환
int[][] map1 = decToBin(n, arr1);
int[][] map2 = decToBin(n, arr2);
//두 배열 겹치기
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(map1[i][j]==0 && map2[i][j]==0) answer[i]+= " ";
else answer[i]+= "#";
}
}
return answer;
}
public int[][] decToBin(int n, int[] arr){
int[][] result = new int[n][n];
for(int i = 0 ; i < n; i++){
int index = n-1;
while(arr[i] > 1){
result[i][index] = arr[i] % 2;
arr[i] /= 2;
index--;
}
if(arr[i] != 0) result[i][index] = 1;
for(int j = 0; j < index; j++) result[i][j] = 0;
}
return result;
}
}
Comments