📖 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡 풀이 방식
• 구현
1. 두 배열의 각각 i번째 원소들끼리 OR연산을 수행한다.
int num = arr1[i] | arr2[i];
2. OR 연산한 int형 값을 2진수로 변환하고 String형으로 값을 얻는다.
String bin = Integer.toString(num, 2); // == Integer.toBinaryString(num)
이진수를 String형으로 만든 값의 길이가 n보다 작다면, 자릿수를 채우고자 앞을 0으로 채운다.
for(int j = 0 ; j < n - bin.length() ; j++) { // 자릿수 모자라면 앞을 0으로 채우기
sb.append(" ");
}
3. String형인 이진 문자열의 값을 반복문으로 돌면서 해당 값이 0이면 빈 칸(' '), 1이면 '#'이 되는 String형으로 저장한 후, 정답 배열에 해당 문자열을 저장한다.
🔺 코드
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
|
import java.util.*;
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for(int i = 0 ; i < n ; i++) {
StringBuilder sb = new StringBuilder();
// 1. OR 연산하기
int num = arr1[i] | arr2[i];
// 2. 이진 문자열 얻기
String bin = Integer.toString(num, 2);
for(int j = 0 ; j < n - bin.length() ; j++) { // 자릿수 모자라면 앞을 0으로 채우기
sb.append(" ");
}
for(char ch : bin.toCharArray()) {
sb.append(ch == '0' ? ' ' : '#');
}
answer[i] = sb.toString();
}
return answer;
}
}
|
cs |
➕ 다른 풀이 방식
- 초간단.... String.format()과 replaceAll을 사용하셨다.
[프로그래머스,Level 1] 비밀지도(JAVA 구현)
- 첫 풀이 및 정답풀이 이 문제를 처음 풀 때 이진수를 변환하는 메서드의 존재에 대해서는 알고 있었지만, 찾아보지 않고 한 번 풀어본 뒤 관련 정보를 찾아 다시 풀어보고자 했다. 필자가 풀어
fbtmdwhd33.tistory.com
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for(int i =0;i<n;i++){
// 1. arr1과 arr2의 원소들을 OR 비트연산 수행한 후, 이진수로 변환
String str = Integer.toBinaryString(arr1[i] | arr2[i]);
// 2. n자리가 안되는 이진수의 나머지는 공백으로 채운다.
str = String.format("%"+n+"s",str);
// 3. 1은 #, 0은 공백 으로 바꾼다.
str = str.replaceAll("1" , "#");
str = str.replaceAll("0" , " ");
// 4. 한 줄 완성
answer[i] = str;
}
return answer;
}
}
- 앞에 0 채울 때 while문 사용하심
[프로그래머스] [1차] 비밀지도 - JAVA
프로그래머스 [1차] 비밀지도 - JAVA 문제 설명 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서
dlee0129.tistory.com
💦 어려웠던 점
25분 소요,,
- 자릿수가 안 맞을 때 앞을 0으로 채워서 자릿수를 맞추려고 할 때 String.format()을 사용해보려다가 그냥 직접 작성했다..
for(int j = 0 ; j < n - bin.length() ; j++) { // 자릿수 모자라면 앞을 0으로 채우기
sb.append(" ");
}
- 새 문자열 임시로 만들어서 정답 배열에 넣었는데 그냥 replace한 값을 정답 배열에 넣어도 되더라
🧐 새로 알게 된 내용
- 문자열 자릿수 맞추기(LPAD) → String.format()
[Java]문자열 자릿수 맞추기(LPAD, RPAD) – 지기닷넷
[Java]문자열 자릿수 맞추기(LPAD, RPAD) by 지기 · Published 2023-02-15 · Updated 2023-02-15 문자열에 패딩을 추가하여 자릿수 맞추는 2가지 방법을 알아보자 첫 번째. String.format() 을 사용하는 방법 두 번째. S
www.jigi.net
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level2] 오픈채팅방 (JAVA) (0) | 2024.02.21 |
---|---|
[프로그래머스/Level2] 메뉴 리뉴얼 (JAVA) (1) | 2024.02.19 |
[프로그래머스/Level2] 양궁대회 (JAVA) (0) | 2024.02.18 |
[프로그래머스/Level3] 가장 먼 노드 (JAVA) (0) | 2024.02.16 |
[프로그래머스/Level3] 섬 연결하기 (JAVA) (0) | 2024.02.16 |