https://programmers.co.kr/learn/courses/30/lessons/17681
방법 1 : 패딩과 문자열 치환을 알고리즘으로
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
|
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
StringBuilder sb = null;
for (int i = 0; i < answer.length; i++) {
// or 비트연산
String strBinary = Integer.toBinaryString(arr1[i] | arr2[i]);
sb = new StringBuilder();
// 0으로 왼쪽패딩
while(strBinary.length() < n) {
strBinary = "0" + strBinary;
}
// 결과 문자열 만들기
for (int j = 0; j < strBinary.length(); j++) {
if (strBinary.charAt(j) == '1') {
sb.append('#');
} else {
sb.append(' ');
}
}
answer[i] = sb.toString();
}
return answer;
}
}
Colored by Color Scripter
|
방법 2 : 패딩과 문자열 치환을 자바제공 메소드로
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for (int i = 0; i < answer.length; i++) {
// or 비트연산
String strBinary = Integer.toBinaryString(arr1[i] | arr2[i]);
// 공백 왼쪽패딩
strBinary = String.format("%" + n + "s", strBinary);
// 문자열 치환
strBinary = strBinary.replaceAll("1", "#");
strBinary = strBinary.replaceAll("0", " ");
answer[i] = strBinary;
}
return answer;
}
}
Colored by Color Scripter
|
방법 1이 방법2보다 좀더 빠르다
보기에는 2번이 깔끔하긴 하지만,
저런게 있는지 굳이 찾아보지 않아도 될 것 같다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스][2018 KAKAO BLIND RECRUITMENT] [1차] 다트 게임 (level 1) (0) | 2019.12.10 |
---|---|
[프로그래머스][2019 KAKAO BLIND RECRUITMENT] 실패율 (level 1) (0) | 2019.12.10 |
[프로그래머스][서머코딩/윈터코딩(~2018)] 예산 (level 1) (0) | 2019.12.06 |
[프로그래머스][2020카카오공채] 문자열 압축 (level 2) (java) (0) | 2019.12.05 |
[프로그래머스]탐욕법(Greedy) : 체육복 (level 1) (java, c++) (0) | 2019.11.08 |
댓글