티스토리 뷰

PS

백준 11559. 뿌요뿌요

tose33 2022. 5. 16. 20:17

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

 

11559번: Puyo Puyo

총 12개의 줄에 필드의 정보가 주어지며, 각 줄에는 6개의 문자가 있다. 이때 .은 빈공간이고 .이 아닌것은 각각의 색깔의 뿌요를 나타낸다. R은 빨강, G는 초록, B는 파랑, P는 보라, Y는 노랑이다.

www.acmicpc.net

 

뿌요뿌요의 법칙을 그대로 구현해야 한다.

 

우선 나는 12x6 으로 주어지는 입력을 받아서 90도 돌린 형태인 6x12 형태로 바꿔줬다.

이렇게 함으로서 주어지는 하나의 세로줄이 하나의 행이 되고, 같은 색끼리 터진 후에 빈 공간을 지워주면 뿌요들이 아래로 내려오는 형태가 된다.

 

4개 이상의 같은 색깔을 판단해야 하는데, bfs로 붙어있는 색들의 갯수를 찾고 4개 이상이라면 터트려 주고, 아니라면 터트리지 않도록 했다.

 

모든 칸들에 대하여 bfs 탐색을 진행해서 붙어있는 같은 색이 4개 이상인 뿌요들을 터트리도록 했다. 

만약 모든 칸들을 bfs 탐색을 했는데 터트린 뿌요가 하나도 없다면 더 이상의 연쇄는 불가능하기 때문에 프로그램을 종료한다. 

 

4개 이상 붙어있는 뿌요들을 터트린 후에는 뿌요들이 아래 공간이 있다면 내려와야 한다.

각 행들에 대하여 (아까 90도 돌려줬으므로) 11부터 0까지 비어있는 공간 ('.') 이라면 erase 해주고, 

행의 크기가 12가 될때까지 해당 행의 뒤에 빈 공간 ('.')을 push_back 해줬다. 

 

 

 

'PS' 카테고리의 다른 글

백준 17140. 이차원 배열과 연산  (0) 2022.05.17
백준 12100. 2048 (Easy)  (0) 2022.05.17
백준 17135. 캐슬 디펜스  (0) 2022.05.16
백준 16235. 나무 재태크  (0) 2022.05.12
백준 2636. 치즈  (0) 2022.05.12
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
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
글 보관함