일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- flask
- JPA
- WIL
- Project
- javascript
- python
- spring
- Java
- html
- bean
- Anolog
- Hibernate
- cookie
- programmers
- server send event
- jenkins
- SseEmitter
- jQuery
- real time web
- 생명주기 콜백
- Stream
- oauth
- JWT
- 항해99
- DI
- hanghae99
- web
- session
- Spring Security
- google oauth
Archives
- Today
- Total
끄적끄적 코딩일지
[Programmers][1차] 비밀지도(난이도:★★★★★★) 본문
https://programmers.co.kr/learn/courses/30/lessons/17681
코딩테스트 연습 - [1차] 비밀지도
비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다
programmers.co.kr
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
return solutionA(n,arr1,arr2);
}
public String[] solutionA(int n, int[] arr1, int[] arr2){
int num = getMulti(n);
String[] answer = new String[n];
for(int i = 0 ; i < n; i++){
char[] a1 = toBinaryMap(n,num,arr1[i]).toCharArray();
char[] a2 = toBinaryMap(n,num,arr2[i]).toCharArray();
String ans = "";
// ascii코드 35(#) 을 비교해서 둘중 하나라도 #이면 #을 붙이고 아니면 ' '을 붙인다.
for(int j = 0; j < a1.length; j++){
if(a1[j] == 35 || a2[j] == 35)
ans += '#';
else
ans += ' ';
}
answer[i] = ans;
}
return answer;
}
// 2진수 변환
// 변환 값이 0이면 빈칸을, 1이면 #을 붙여 변환된 형태로 반환한다.
public String toBinaryMap(int n,int size,int num){
String ans = "";
int sub = size;
for(int i = 0; i < n; i ++){
int tmp = num / sub;
ans = ans + (tmp == 0?" ":"#");
num %= sub;
sub /= 2;
}
return ans;
}
public int getMulti(int n){
int res = 1;
for(int i = 0; i < n-1; i ++)
res *= 2;
return res;
}
}
'알고리즘' 카테고리의 다른 글
[Programmers][1차] 다트게임(난이도:★★★★★★) (0) | 2022.05.17 |
---|---|
[Programmers]키페드 누르기(난이도:★★★★★★) (0) | 2022.05.17 |
[Programmers]폰켓몬(난이도:★★★★★) (0) | 2022.05.17 |
[Programmers]체육복(난이도:★★★★★) (0) | 2022.05.17 |
[Programmers]실패율(난이도:★★★★★) (0) | 2022.05.17 |