반응형
문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/17681
문제 풀이 힌트
- n과 두 정수 배열 arr1, arr2를 입력받아 이진수로 변환합니다.
- 변환된 이진수를 n자리로 맞추어 0으로 패딩합니다.
- 각 자리의 비트를 비교하여 하나라도 1이면 "#"을, 둘 다 0이면 " "을 추가합니다.
- 변환된 문자열을 모아 answer 배열에 저장합니다.
- answer 배열을 반환하여 지도를 완성합니다.
정답 풀이 코드
// 주어진 n과 arr1, arr2를 사용하여 지도를 반환하는 함수
function solution(n, arr1, arr2) {
// 결과를 저장할 배열 선언
let answer = [];
// 배열의 길이만큼 반복
for(let i = 0; i < n; i++) {
// arr1과 arr2의 i번째 요소를 2진수 문자열로 변환하고, 길이를 n만큼 맞추어 0으로 패딩
let a = (arr1[i]).toString(2).padStart(n, 0);
let b = (arr2[i]).toString(2).padStart(n, 0);
// 각 줄의 결과를 저장할 임시 문자열 선언
let temp = '';
// 각 줄의 각 자리수를 검사
for(let j = 0; j < n; j++) {
// 두 배열의 해당 자리의 값이 모두 0이면 빈 칸을 추가
if(a[j] === "0" && b[j] === "0") temp += " ";
// 하나라도 1이면 #을 추가
else temp += "#";
}
// 완성된 줄을 결과 배열에 추가
answer.push(temp);
}
// 최종 결과 반환
return answer;
}
Only 풀이 코드
function solution(n, arr1, arr2) {
let answer = [];
for(let i=0; i<n; i++){
let a = (arr1[i]).toString(2).padStart(n, 0)
let b = (arr2[i]).toString(2).padStart(n, 0)
let temp = '';
for(let j=0; j<n; j++){
if(a[j] === "0" && b[j] === "0") temp += " "
else temp += "#"
}
answer.push(temp)
}
return answer;
}
다른 사람 풀이 01.
function solution(n, arr1, arr2) {
let answer = [];
for (let i = 0; i < n; i++) {
answer.push(
(arr1[i] | arr2[i])
.toString(2)
.padStart(n, 0)
.replace(/1/gi, "#")
.replace(/0/gi, " ")
);
}
return answer;
}
다른 사람 풀이 02.
function solution(n, arr1, arr2) {
var answer = [];
let c;
for(let i =0;i<n;i++){
c = (arr1[i]|arr2[i]).toString(2).replace(/1/g,"#").replace(/0/g," ");
while(c.length != n) {
c = " " + c;
}
answer.push(c);
}
return answer;
}
반응형
'알고리즘 문제 풀기' 카테고리의 다른 글
프로그래머스: [3차] N진수 게임 - javascript(toString, toUpperCase()) (0) | 2024.04.08 |
---|---|
프로그래머스: 키패드 누르기 - javasript(구현, Math.abs, 숫자 규칙) (0) | 2024.04.06 |
이진수 함수 dfs로 구현하기 (0) | 2024.04.05 |
프로그래머스: 크레인 인형뽑기 게임 - javascript (구현) (0) | 2024.04.04 |
프로그래머스: [1차] 다트 게임 - javascript(switch, 정규식) (0) | 2024.04.03 |