본문 바로가기
코딩테스트/LV. 1

LV. 1 :: 크레인 인형뽑기 게임

by KUROMI98 2023. 1. 30.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

function solution(board, moves) 
{
    // board[0][moves[i]-1]부터, board[1][moves[i]-1], ... 
    // 마지막으로 board[board.length-1][moves[i]-1] 까지 훑어보면서,
    // 이 중 '0이 아닌 첫 원소'를 basket(바구니)에 push하고, 
    // 그 '0이 아니던 첫 원소'를 0으로 만들어준다.
    
// ---------------------------------------------------------------------------------
    
    var basket = [];
    
    for (i=0; i<moves.length; i++)
    {
        for (j=0; j<board.length; j++)
        {
            if (board[j][moves[i]-1] !== 0) // 0이 아닌 원소를 만나면,
            {
                basket.push(board[j][moves[i]-1]);
                // 이 원소를 basket에 push해주고,
                board[j].splice(moves[i]-1, 1, 0);
                // 0으로 만들어준다.
                break; 
                // break 넣는거 되게 중요함ㅋㅋ 이거 안넣어서 작동안됐었음
            }
        }
    }
    // basket = [4,3,1,1,3,2,4]

// ---------------------------------------------------------------------------------
    
    var num = 0; // 사라지는 인형의 개수를 num이라고 해준다.
    
    for (j=basket.length-1; j>0; j--)
    {
        for (i=basket.length-1; i>0; i--)
        {
            if(basket[i]==basket[i-1]) // 연속된 원소가 나타난다면
            {
                basket.splice(i, 1); // 그 원소 두 개를 
                basket.splice(i-1, 1); // 다 삭제해 주고
                num += 2; // num에 2를 더해준다.
                // 왜 2냐면 인형 2개가 한번에 사라지니까
            }
        }
    }
    
    return num;
}

 

손코딩했던거 ㅋㅋ 게임개발자가 되는게 버킷리스트 중 하나라서 꼭 풀고싶었던문제 >_< 수고링~

 


+) 241024

function solution(board, moves) {
    let newArray = [];
    let tempArray = [];
    for (let row=0; row<board.length; row++){
        for (let column=0; column<board.length; column++){
            tempArray.push(board[column][row])
        }
        newArray.push(tempArray)
        tempArray = []
    }
    
    let stack = [];
    let deletedCount = 0;
    for (let moveindex=0; moveindex<moves.length; moveindex++){
        for (let boardindex=0; boardindex<board.length; boardindex++){
            if (newArray[moves[moveindex]-1][boardindex] !== 0 ) {
                if (stack.length > 0 && stack[stack.length-1] == newArray[moves[moveindex]-1][boardindex]) {
                    stack.pop()
                    deletedCount += 2
                    newArray[moves[moveindex]-1][boardindex] = 0
                    break;
                } else {
                    stack.push(newArray[moves[moveindex]-1][boardindex])
                    newArray[moves[moveindex]-1][boardindex] = 0
                    break;
                }
            }
        }
    }

    return deletedCount;
}

'코딩테스트 > LV. 1' 카테고리의 다른 글

LV. 1 :: K번째 수  (0) 2023.01.31
LV. 1 :: 모의고사  (0) 2023.01.30
LV. 1 :: 신규 아이디 추천  (0) 2023.01.30
LV. 1 :: 실패율  (0) 2023.01.30
LV. 1 :: 약수의 개수와 덧셈  (0) 2023.01.29

댓글