Programmers 36

괄호 회전하기 ( Level 2, JavaScript, 월간 코드 챌린지 시즌2 )

괄호 회전하기 ( Level 2 ) Programmers 월간 코드 챌린지 시즌2 ( JavaScript ) 문제 링크 나의 풀이 function solution(s) { let res = 0; for ( let i = 0; i < s.length; i++ ) { const arr = []; let str = s.slice(i) + s.slice(0,i) for ( let j = 0; j < str.length; j++ ) { switch ( str[j] ) { case '(': case '[': case '{': arr.push(str[j]) break; case ')': arr.slice(-1)[0] === '(' ? arr.pop() : arr.push(str[j]) break; case ']': ..

2개 이하로 다른 비트 ( Level 2, JavaScript, 월간 코드 챌린지 시즌2 )

2개 이하로 다른 비트 ( Level 2 ) Programmers 월간 코드 챌린지 시즌2 ( JavaScript ) 문제 링크 나의 풀이 function solution(numbers) { return numbers.map(el => { if ( el % 2 ) { let two = el.toString(2) const idx = two.lastIndexOf('0') two = idx === -1 ? '10' + two.slice(1) : two.slice(0, idx) + '10' + two.slice(idx + 2) return parseInt(two, 2) } else { return el + 1 } }) } 짝수인 경우 이진수 마지막 자리인 0을 1로 바꾸는 과정 > 즉 +1을 해준다. 홀수인 ..

이진 변환 반복하기 ( Level 2, JavaScript, 월간 코드 챌린지 시즌1)

이진 변환 반복하기 ( Level 2 ) Programmers 월간 코드 챌린지 시즌1 ( JavaScript ) 문제 링크 나의 풀이 function solution(s) { let count = 0, countZero = 0; while ( s !== "1" ) { if ( s.split('').every(a => a === '1') ) { s = (s.length).toString(2) } else { const len = s.split('').filter(a => a === '1').length countZero += s.length - len s = len.toString(2) } count++ } return [count, countZero] } 변환 횟수 count, 제거된 0의 개수를 담을..