algorithm 222

행렬 테두리 회전하기 ( Level 2, JavaScript, 2021 Dev-Matching )

행렬 테두리 회전하기 ( Level 2 ) 2021 Dev-Matching: 웹 백엔드 개발자(상반기) ( JavaScript ) 문제 링크 나의 풀이 function solution(rows, columns, queries) { const arr = Array(rows).fill(1) .map((el, i) => Array(columns).fill(el + i * columns) .map((a, i) => a + i) ) const res = [] while ( queries.length ) { const query = queries.shift(); let num = []; for ( let i = query[1]; i < query[3]; i++ ) num.push(arr[query[0]-1][i-1..

로또의 최고 순위와 최저 순위 ( Level 1, JavaScript, 2021 Dev-Matching )

로또의 최고 순위와 최저 순위 ( Level 1 ) 2021 Dev-Matching: 웹 백엔드 개발자(상반기) ( JavaScript ) 문제 링크 나의 풀이 function solution(lottos, win_nums) { let count = 0, zero = 0; for ( let i = 0; i < lottos.length; i++ ) { if ( win_nums.includes(lottos[i]) ) count ++ if ( lottos[i] === 0 ) zero++ } if ( !count && !zero ) return [6,6] return [Math.max(7-count-zero, 1), Math.min(7-count, 6)] } 0과 이외의 숫자 개수를 센 뒤 등수 계산

괄호 회전하기 ( 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을 해준다. 홀수인 ..