1) 프로그래머스에 제출한 답.
function solution(board, moves) {
let answer = 0;
let bucket = [];
for(let pos of moves){
for(let x = 0; x < board.length; x++ ){
if( board[x][pos-1] !== 0 ){
if( bucket.length > 0 && bucket[bucket.length-1] === board[x][pos-1] ){
answer += 2
bucket.pop();
}else{
bucket.push(board[x][pos-1]);
}
board[x][pos-1] = 0;
break;
}
}
}
return answer
}
reduce로 객체 인덱싱하는 것처럼 어떻게 해보면 행,열 바꿀 수 있을 것 같다 싶었는데 생각대로 잘 안됐었다. 그래서 답 제출 후 찾아봤다.
const array = [[1,2,3,4],[5,4,8,6],[0,7,8,9]];
array.reduce((result, row) => row.map((_, i) => [...(result[i] || []), row[i]]),[]);
2) ,블로그 포스팅 하다가 수정해 본 코드
function solution(board, moves) {
let answer = 0;
let bucket = [];
let newBoard = board.reduce((prev, now) => now.map( (val, i) => { if(!val) return; return [ now[i],...(prev[i] || []) ]} ),[]);
for(let pos of moves){
if( bucket[bucket.length-1] === newBoard[pos-1][newBoard[pos-1].length-1]){
bucket.pop();
newBoard[pos-1].pop();
answer+=2;
}else{
bucket.push(newBoard[pos-1].pop());
}
}
return answer
}
코드 길이 자체는 별반 차이가 없지만 불필요한 데이터를 모두 빼버리니 검색하기 더 좋지 않으까.
개인적으로 코딩테스트 통과하는 사람들은 진짜 대단한 것 같다. 알고리즘 풀이 실력보다도 쉬지않고 흘러가는 타이머를 보면서도 문제가 눈에 들어온다는게 진짜 ㅋㅋㅋ 신기할 따름이다.
'Web > Algorithm' 카테고리의 다른 글
2022 카카오 신입 공채 - k진수에서 소수 개수 구하기 (0) | 2022.09.04 |
---|---|
2022 카카오 신입 공채 - 신고 결과 받기 (0) | 2022.09.03 |
[프로그래머스 > 해시] 베스트 앨범 (0) | 2020.06.23 |
[ 프로그래머스 > 정렬 ]H-Index (0) | 2020.04.25 |
[ 프로그래머스 > 해시] 위장 (0) | 2020.04.23 |