본문 바로가기
짱구 굴리기 (Q) -

[프로그래머스 / 2018 카카오 블라인드 채용] 프렌즈 4블록

by skwzz 2019. 10. 11.

출처 : https://programmers.co.kr/learn/courses/30/lessons/17679

 

이거 예전에 실제로 지원했던 시험인데 그땐 왜인지는 모르겠지만 그냥 1번, 2번문제 풀고인가 포기했었습니다.

그때 이 블록문제가 기억에 크게 남아있어서 이번에 다시 풀어봤습니다.

푸니까 풀리더군요... 그때 그냥 개같이 할걸그랫나?

 

결과적으로 어떻게 진행하지 말씀드리면

1. 보드를 2차원 배열에 옮겨주고나서 배열을 쭉 탐색한다.

2. 현재 값이 현재 위치의 (우, 하, 우하) 3개가 동시에 같은지 알아본다. 

   만약 3개의 값이 동시에 같다면 현재 배열위 위치와 3방향의 위치를 check 배열에서 1로 표시한다.

3. check배열의 1의 개수를 구한다. ( 2*2가 성립되어 사라질 블록의 개수) 그리고 answer에 더한다.

4. 배열을 세로방향으로 돌면서 큐에 넣음. check를 확인하며 남아있을 블록을 큐에 넣고 없어진 블록 수 만큼 공백을 넘.

5. 큐값을 배열의 세로부분에 덮어 씌움. 이후 check 초기화.

위의 진행을 반복합니다. (1번의 보드 2차원 배열 옮기는건 처음만)

마지막 루프의 조건 : check 배열의 1의 갯수가 0일때 반복문을 빠져나옴.

 

밑의 코드에 보면 뭔가 goNext 부분과 tempCnt 부분에서 강제로 빠져나가는 부분을 손보고 싶었지만

일단 코드가 드럽든 어쨋든 풀어보자 ( 풀수 있을거 같앗음. 왠지 ) 라는 생각으로 했습니다.

 

 

(밑의 코드는 이클립스로 작성했고 프로그래머스에 제출하기 위해선 입력부분에 대한 수정, 리턴값에 맞춰 코드를 약간 수정해야 합니다.)