본문 바로가기

프로그래머스 코딩테스트 연습 Lv1

프로그래머스 코딩테스트 연습 - 모든문제 Lv1 [ 크레인 인형뽑기 게임]

[문제설명]

- 게임 화면은 1x1크기의 칸으로 구성된 NxN크기의 정사각형 격자임.

- 위쪽엔 크레인 옆엔 바구니가 있음.

- 인형은 격자의 아래부터 차곡차곡 쌓여있음.

- 집어올린 인형은 바구니의 아래부터 차곡차곡 쌓임.

- 같은 모양의 인형이 바구니에 쌓이면 터짐.

- 바구니의 크기는 모든 인형의 크기만큼임.

- 격자의 상태가 담긴 2차원 배열 board[]

- 크레인을 작동시킨 위치가 담긴 배열 moves[]가 매개변수로 주어짐.

- 크레인을 모두 작동시킨후 매개변수로 주어질 때, 크레인을 모두 작동시킨 후 터트려서 사라진 인형의 개수를 return.

 

[제한사항]

- board 배열은 2차원 배열로 5이상 30이하임.

- board각 칸에 0이상 100이하의 정수가 담겨있음. 숫자는 인형의 종류를 의미.

- moves 배열의 크기는 1이상 1000이하임.

- moves 원소의 값은 1 이상이며 board의 가로크기 이하인 자연수임.

 

[입출력 예]

 

[내풀이]

- 문제가 길길래 카카오 문제인거 같았음.

- 차곡차곡 이라는 말이 있으니까 스택 같았는데.. 바구니라는 스택에 board와 moves 배열을 참고해서

하나씩 넣고 만약 연속된 수가 나오면 그 수를 없애는 방식인듯.

왜인지 모든 테스트케이스를 틀렸다.. ㅠㅠ

아아아아!! 와 한 한시간 고민한듯.. 저게 board의 배열을 그림 자체로 행열로 봐야하네.. board[0]이 영배열인게 아니라 가장 윗줄 이라는 뜻! 내가 한것처럼 pop을 이용해서 하는 문제가 아닌듯. 다시 해보겠습니다.

우선.. 이중 반복을 썻고 반복문 안에 If- else 문이 많아서 개인적으로 짜면서도 불안한 코드 였다.

약간 노가다 코드기 때문에 틀렸을거 같진 않았음!

 

[내공부]

이게 많이 푼 풀이 인데,, 스택의 개념을 잘 쓴거다. 다만 다른점은 이사람은 바구니에 넣고 바구니의 맨끝과 그앞을 비교해서 둘다 pop을 했는데 나는 바구니에 넣기전에 비교하고 pop을 한번만 했다는점!