알고리즘 공부

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

철매존 2021. 5. 1. 02:29
728x90
반응형

문제 설명

1. 인형을 크레인을 통해서 배열 안에서 가져오게 된다.

2. 크레인은 인형을 행이 아니라 열을 기준으로 뽑아오게 된다.

3. 즉, 위의 그림의 경우를 예를 들면 ( O이 인형이 있음, X는 없음 )

         [ X X X X X  ]

         [ X X O X O ]

         [ X O O X O ]

         [ O O O O O ]

         [ O O O O O ]

다음과 같이 나타날 것이고, 크레인은 위에서 아래 방향으로 인형을 뽑아올 것이다.

4. 인형이 없는 곳에서 크레인을 작동시키면 아무런 일도 일어나지 않는다.

5. 바구니는 모든 인형이 들어갈 만큼 큰 크기이며, 같은 인형이 들어가면 터져서 사라진다.

6. 터져서 사라지는 인형의 수를 return하면 된다.

 

 

풀이 과정

1. 크레인을 통해서 뽑아온 인형을 담는 통은 Stack으로 만든다.

이를 통해 인형을 순서대로 차곡차곡 쌓으며, 선입 후출법으로 가장 최근에 담긴 인형을 다음 인형과 비교할 것이다. 

 

2. 가져온 인형을 담는 통에서는 크레인을 통해 인형을 가져올 때, 3가지 경우에 따라 다른 결과를 갖는다.

 

 먼저 가져온 인형을 담을 통이 비어있는 경우

     - 이 경우, 그냥 뽑아온 인형을 담아주면 된다.

 

 다음으로 가져온 인형이 이전에 통에 담겨져 있던 인형과 다를 경우

     - 이 경우, 가져온 인형을 담아주면 된다.

 

 마지막으로 가져온 인형과 이전에 통에 담겨져 있던 인형이 같을 경우

     - 이 경우, 가져온 인형과 원래 있던 인형이 만나 두 개가 터지게 된다.

 

3. 인형이 터지는 경우 원래 있던 인형, 새로 가져온 인형 총 두개 터지므로 정답은 두개가 늘어난다.

4. stack의 peek값을 고려할 때, 존재하지 않으면 error가 나오므로 통이 비어있는 경우를 생각해야 할 것이다.

 

      

 

코드

 

반응형