https://programmers.co.kr/learn/courses/30/lessons/17681
1시간 내내 문제를 풀었다. 풀고 해설을 보니 비트연산자라는게있는걸 알게되었고 , 비트연산자를 찾던 중 toString 메소드로 이진법을 표현할 수 있다는 걸 알게되었다. 이렇게 길게 풀 필요가 없다는점...ㅠㅠ\
내일 코드푸는 시간에 이걸 다시 풀어봐야겠다
https://velog.io/@jakeseo_me/2019-04-30-1604-%EC%9E%91%EC%84%B1%EB%90%A8-7qjv3gv9ad
기존코드
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 |