https://programmers.co.kr/learn/courses/30/lessons/17681
코딩테스트 연습 - [1차] 비밀지도
비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다
programmers.co.kr
1시간 내내 문제를 풀었다. 풀고 해설을 보니 비트연산자라는게있는걸 알게되었고 , 비트연산자를 찾던 중 toString 메소드로 이진법을 표현할 수 있다는 걸 알게되었다. 이렇게 길게 풀 필요가 없다는점...ㅠㅠ\
내일 코드푸는 시간에 이걸 다시 풀어봐야겠다
https://velog.io/@jakeseo_me/2019-04-30-1604-%EC%9E%91%EC%84%B1%EB%90%A8-7qjv3gv9ad
자바스크립트 개발자라면 알아야 할 33가지 개념 #12 자바스크립트 비트연산 실제로 활용하기!
들어가기 전에 이 포스팅은 https://codeburst.io/using-javascript-bitwise-operators-in-real-life-f551a731ff5 에 있는 포스팅들을 번역한 것입니다. 오역이나 의역이 있을 수 있습니다. 지적해주시면 확인 후 바로
velog.io
기존코드
function solution(n, arr1, arr2) {
function recursion(n){
let result;
if(n===1){
return '#'
}
if(n===0){
return ' '
}
if(n%2===1){
n=n-1
result ='#'
}else{
result =' '
}
return recursion(n/2)+result
}
let result=[]
for(let i =0; i<n;i++){
let p =recursion(arr1[i])
let q = recursion(arr2[i])
p=p.length<n?' '.repeat(n-p.length)+p:p
q=q.length<n?' '.repeat(n-q.length)+q:q
let dd=''
for(let j =0 ; j<p.length;j++){
if(q[j]==='#'||p[j]==='#'){
dd+='#'
}else{
dd+=' '
}
}
result.push(dd)
}
return result
}
위의 링크 읽고 개선한 코드
function solution(n, arr1, arr2) {
let result =[]
result=arr1.map((el,index)=>{
let newEl = (el|arr2[index]).toString(2).replace(/1/g,'#').replace(/0/g, ' ')// 동시에 할 방법은 업나...
return newEl.length<n?' '.repeat(n-newEl.length)+newEl:newEl
})
return result
}
다만 저 replace를 동시에 했으면 좋겠는데, 방법을 찾아보니 대체될 str부분에 함수하나 넣어서 확인하던데.. 변수 앞 + 가 대체 무엇인지 모르겠다..ㅠㅠ
'알고리즘 > 프로그래머스 문제-JS' 카테고리의 다른 글
[JS]부족한 금액 (0) | 2022.07.06 |
---|---|
[JS]최소직사각형 (0) | 2022.07.06 |
[JS]최대공약수와 최소공배수 (0) | 2022.06.27 |
[JS]예산 (0) | 2022.06.26 |
[JS]숫자 문자열과 영단어 (0) | 2022.05.31 |