20210120 크레인 인형뽑기 stack

NOAH·2021년 1월 20일
0

TIL

목록 보기
7/179
post-thumbnail

회고 :: '느낌'에 속지 말자.

강의를 보고 책을 읽는 것의 효용을 과대평가 하지 말자.
'무엇을 몰랐 던 것인지 인지 + 지식이 늘어 났다는 느낌'
만을 줄 수 있을 뿐이다.

보고 듣고 읽었다고 체화한 것 같다는 myth를 주는 것은 주의해야겠다.
이미 갖고 지식과 인지한 것을 충돌시켜서 좌절하다가 익숙해지는 순간이
내가 생각하는 학습(=배워 익힌)한 양이다.

특성상 점진적이고 장시간이 걸리고 괴로운 과정이다.
고로, 한 문제만 풀어도 나는 만족한다 ^_^

인지

static, stack, 2차 배열 특징

학습

크레인 인형 뽑기 게임 알고리즘 문제


import java.util.Stack;
class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        
        // 인형들 담아둘 basket이라는 스택 객체생성
        Stack<Integer> basket = new Stack<>();
        
        // 몇번째 열을 뽑을 지 나열되있는 moves 인덱스 반복문
        for(int i=0; i< moves.length; i++){
        // board의 배열은 0 부터 시작하므로, m번열은 move[i] - 1열 
            int m = moves[i]-1;
            // m번열의 j행을 차례대로 내려가면서 검사
            for(int j=0; j<board.length; j++){
            // 만약 j행의 값이 인형이 있다면
                if(board[j][m] != 0){
                // basket이 비어있는지 확인해보고
                    if(basket.empty()){
                    // basket에 borad[j][m]의 인형을 푸쉬
                        basket.push(board[j][m]);
                    }else{
                    // 인형이 없고, basket과 board의 인형이 같으면
                        if(basket.peek() == board[j][m]){
                       
                       // basket인형 삭제후 없어질 인형개수 +2
                            basket.pop();
                            answer += 2;
                        }else{ 
                        // 아니면 borad에 있는 basket인형 넘기고 끝
                            basket.push(board[j][m]);
                        }
                    }
                    // 인형이 없으면 반복문 해제
                    board[j][m] = 0;
                    break;
                }
            }
        }
        return answer;
    }
}

2개의 댓글

comment-user-thumbnail
2021년 1월 20일

강의를 듣고, 책을 읽고 배운다는게 결국 스스로 정리하지 않으면 지나가는 지식인 것에 공감합니다! 오늘도 고생 많으셨어요!

1개의 답글