ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 크레인 인형뽑기 게임
    프로그래머스알고리즘 2021. 3. 17. 18:54

    board 배열

    [00000]

    [00103]

    [02501]

    [42442]

    [35131]

     

    moves 배열

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

     

    1.board 배열을 순회하면서 값이 있는 배열을(0이 아닌값) 찾음

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

     

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

     

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

     

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

     

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

     

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

     

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

     

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

     

    2.값을 찾으면 tmp vector에 순차적으로 적재를 해준다. 이때 적재를 한 후 현재 vector전의 값과 현재 값이 같다면

    erase 사용하여 값 2개 삭제 - > answer +2

     

    3.board배열에서 찾았던 값은 크레인으로 뽑아갔으니 0으로 변환시켜줌

     

    4.break 종료

     

    #include <string>
    #include <vector>
    
    using namespace std;
    
    int solution(vector<vector<int>> board, vector<int> moves) {
        int answer = 0;    
    	vector<int> tmp;
        int tmps = 0;
       for(int i=0;i<moves.size();i++)
       {
          for(int j=0;j<board.size();j++)
          {
             if(board[j][moves[i]-1]!=0) 
             {
                tmp.push_back(board[j][moves[i]-1]);
                if(tmp.size()>1&&tmp[tmp.size()-2] == tmp[tmp.size()-1])
                {
                   tmp.erase(tmp.begin()+tmp.size()-2);
                   tmp.erase(tmp.begin()+tmp.size()-1);   
                   answer=answer+2; 
                }
                   
                board[j][moves[i]-1] = 0;
                break;   
             } 
          }
       
       }
    
        return answer;
    }

     

    test code

    #include<iostream>
    #include<vector>
    
    using namespace std;
    int main()
    {
        vector<vector<int>> board = {{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}};
        vector<int> moves = {1,5,3,5,1,2,1,4};
        int answer = 0;    
    	vector<int> tmp;
        int tmps = 0;
        for(int i=0;i<moves.size();i++)
        {
          for(int j=0;j<board.size();j++)
          {
        
             if(board[j][moves[i]-1]!=0) 
             {
                tmp.push_back(board[j][moves[i]-1]);
                if(tmp.size()>1&&tmp[tmp.size()-2] == tmp[tmp.size()-1])
                {
                   tmp.erase(tmp.begin()+tmp.size()-2);
                   tmp.erase(tmp.begin()+tmp.size()-1);  
    			   answer=answer+2; 
                }
                   
                board[j][moves[i]-1] = 0;
                break;   
             } 
          }
       
        }
        
    
      cout << answer;
    
    }

    '프로그래머스알고리즘' 카테고리의 다른 글

    구명보트  (0) 2021.04.13
    DFS 타겟넘버  (0) 2021.03.31
    완전탐색 모의고사  (0) 2021.03.16
    k번째 정수  (0) 2021.03.12
    가장 큰수(정렬)  (0) 2021.03.10
Designed by Tistory.