연습/프로그래머스

[프로그래머스][Javascript] 크레인 인형뽑기 게임

지이구 2021. 7. 7. 16:51

https://programmers.co.kr/learn/courses/30/lessons/64061

 

코딩테스트 연습 - 크레인 인형뽑기 게임

[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4

programmers.co.kr

 

100% 완벽한 코드라고 생각하지 않지만

충분히 고민하고 생각해낸 보람이 있는 코드이다!

 

 

function solution(board, moves) {
    let result = 0; // 뺀 인형 갯수
    let box = []; // 뽑은 인형담는 통

    for(var i=0; i<moves.length; i++){ // ===!!!인형뽑기 시작!!!===
        for(var j=0; j<board.length; j++){ // 인형뽑기 기계에서
            if(board[j][moves[i]-1] !== 0){ //인형 뽑아서
                if(box.length > 0){ // 뽑은 인형이 1개 이상일 때
                    var lastdoll = box.pop(); // 인형 통에서 맨위에 있는 인형 빼기
                    if(lastdoll == board[j][moves[i]-1]){ //맨위 인형이랑 뽑은 인형이랑 같으면
                        result += 2; //둘 다 빼버리고 뺀 인형 갯수 증가 (!!다시 돌려놓지 않음)
                    }else{ //박스에 있던 애랑 다르면
                        box.push(lastdoll); // 뺐던 인형 다시 돌려놓고
                        box.push(board[j][moves[i]-1]); //박스에 넣고
                    }
                }else{ // 처음 뽑는 인형일때
                    box.push(board[j][moves[i]-1]); //박스에 넣고
                }
                board[j][moves[i]-1] = 0; // 뽑은 인형 자리를 비움
                break; // 다음 뽑기 실행
            }
        }
    }
    return result;
}

 

 

요즘 자바말고 스크립트로 코테푸는데 자바랑 혼동되는 개념이 너무많다..

정리를 꼭하고 넘어가야할듯 ㅠㅠ

728x90
반응형