배운점
숫자 | 숫자 연산
자바스크립트에서 다음과 같이 숫자 | 숫자 연산을 하면 2진법으로 or 연산을 사용한 값이 리턴된다.
console.log(10|1) // 11
console.log(11|1) // 11
자바스크립트에서 진법 변환
또 정말 편리하다 라고 생각 된 것이 다음과 같이 숫자에 toString(원하는 진수) 를 하면 해당 진법으로 변환한다는 것이다.
console.log((8).toString(2)) // 1000
console.log((8).toString(3)) // 22
다음 처럼 2진수로 변환한다음 | 을 사용하여 or 연산할 수도 있다.
console.log((8).toString(2) | (1).toString(2)) // 1001
특정진수 10진수로 변환
인수로는 parseInt('변환시키고자하는 문자열', 해당 수의 진수) 가 들어간다.
let target = "1000"
console.log(parseInt(target,2)) // 8
padStart
또한 이 문제에서 8 과 같은 수는 2진법으로 표현하면 1000 이 될 것이다.
하지만 지도가 5 x 5 의 크기라면 한자리수가 비어서 문제가 된다.
그럴때 빈자리를 채우기 위해 padStart 메소드를 사용한다.
console.log((8).toString(2).padStart(6,"0")) // 001000
console.log((8).toString(2).padStart(5,"0")) // 01000
padEnd
padEnd는 뒤에 파라미터에 넣은 문자를 넣어준다.
console.log((8).toString(2).padEnd(6,"0")) // 100000
문제풀이
function solution(n, arr1, arr2) {
var answer = [];
for (let i=0; i<n; i++){
let target = (arr1[i] | arr2[i]).toString(2).padStart(n,0)
let str = ''
for (let j=0; j<n; j++){
if(target[j]=='1'){
str += "#"
}
else {
str += " "
}
}
answer.push(str)
}
return answer;
}
'공부기록 > 자바스크립트 코딩테스트' 카테고리의 다른 글
자바스크립트 Map 정렬하기 (0) | 2022.06.23 |
---|---|
[프로그래머스/JS] 3진법 뒤집기 (0) | 2022.06.23 |
[프로그래머스/JS] 최소직사각형 (0) | 2022.06.23 |
[프로그래머스/JS] 1차 다트게임 (0) | 2022.06.22 |
[프로그래머스/JS] 나머지가 1이 되는 수 찾기 (0) | 2022.06.22 |