티스토리 뷰

반응형

https://www.acmicpc.net/problem/20061

 

20061번: 모노미노도미노 2

모노미노도미노는 아래와 같이 생긴 보드에서 진행되는 게임이다. 보드는 빨간색 보드, 파란색 보드, 초록색 보드가 그림과 같이 붙어있는 형태이다. 게임에서 사용하는 좌표 (x, y)에서 x는 행,

www.acmicpc.net

 

난이도 : 골드 3

 

테트리스와 비슷하게 구현하면 됩니다.

블록을 놓았을 때 파랑, 초록에 적절히 이동시키고 라인이 채워지면 점수 올리고 연한 부분 처리만 해주면 됩니다.

저는 오타 때문에 꽤 오랜 시간 헤맸네요. 복붙을 할 때에는 정신 바짝 차려서 해야겠습니다.

가독성을 잡기 위해 길이를 포기했기 때문에 디버깅이 쉽지 않네요.


전역 변수

int score = 총 점수

int blue[][], green[][] = 파랑, 초록 배열

 

함수

void main

입력을 받고 블록을 놓습니다.

(moveBlock, getScore, pushGreen, checkGreen, pushBlue, checkBlue, count 호출)

 

void moveBlock

1, 2, 3에 맞는 블록을 놓습니다. 블럭이 미리 이동할 곳을 index로 탐색하고 정상 범위의 값이며 빈 곳이라면 블럭을 옮깁니다.

 

void getScore

초록, 파랑을 돌며 행, 열이 꽉 찬 칸을 찾습니다. 꽉 채워졌다면 점수를 올리고 위에 있는 블록들을 한 칸씩 내립니다.

(cleanGreen, cleanBlue 호출)

 

void cleanGreen, cleanBlue

현재 줄 위에 있는 블록부터 한 칸씩 밑으로 내립니다.

 

int checkGreen, checkBlue

연한 칸을 돌면서 몇 줄을 밑으로 내려야 할지 검사합니다.

 

void pushGreen, pushBlue

check 메소드를 통해 얻은 줄 수만큼 밑으로 내립니다.

 

int count

초록, 파랑에 남은 블럭 수를 셉니다.

 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함