Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- content script
- 백준
- 백준 #7568번 #파이썬 #동적계획법
- popup
- 2156
- C언어로 쉽게 풀어쓴 자료구조
- Message Passing
- 파이썬
- 프로그래머스 #정수삼각형 #동적계획법
- 자료구조
- 갓생
- 동적계획법
- X
- supabase
- react
- 디스코드 봇
- 백준 7579
- 크롬 확장자
- 공부시간측정어플
- nodejs
- 크롬 익스텐션
- 포도주시식
- webpack
- Chrome Extension
- TypeScript
- 캠스터디
- background script
- discord.js
Archives
- Today
- Total
히치키치
[백준] 11559번 : Puyo Puyo - Python(파이썬) 본문
문제
11559번: Puyo Puyo
총 12개의 줄에 필드의 정보가 주어지며, 각 줄에는 6개의 문자가 있다. 이때 .은 빈공간이고 .이 아닌것은 각각의 색깔의 뿌요를 나타낸다. R은 빨강, G는 초록, B는 파랑, P는 보라, Y는 노랑이다.
www.acmicpc.net
풀이
- DFS : 같은 색 & 이어진 뿌요 탐색
- que : 현재 위치 중심으로 사라질 뿌요 탐색
- set : 색깔 상관없이 사라질 모든 뿌요 집합 (=DFS에서 조건 만족한 모든 뿌요)
- 뿌요 내리기 : 밑에서부터 시작 / 위에 뿌요 있으면 . 과 바꿔주기
- While : flag 켜져 있으면 연쇄 횟수 증가, flag 꺼지면 반복문 탈출
코드
#문제 https://www.acmicpc.net/problem/11559
from collections import deque
def BFS(x, y,color): #터질 뿌요 탐색
colors=set()
que=deque()
que.append((x,y))
while que:
node = que.popleft()
if node in colors: continue
colors.add(node)
for i in range(4): #범위내 같은 색깔 탐색
nx, ny = node[0]+dx[i], node[1]+dy[i]
if not(0<=nx<n and 0<=ny<m): continue #game 보드 내 범위 아님
if board[nx][ny] == color: #같은 색
que.append((nx, ny)) #큐에 추가 -> while 돌며 추가된 위치 중심으로 다시 탐색
return colors
def down():
for y in range(m):
for x in range(n-1, -1, -1):
if board[x][y] == '.': continue
for k in range(n-1, x, -1):
if board[k][y] == '.':
board[k][y] = board[x][y]
board[x][y] = '.'
cnt = 0
n, m = 12, 6
board = [list(input().strip()) for _ in range(n)]
dx = (0, 1, 0, -1)
dy = (1, 0, -1, 0)
while(1):
flag = 0
for i in range(n-1, -1, -1):
for j in range(m):
if board[i][j] == '.': continue
array = BFS(i, j, board[i][j])
if len(array) >= 4:
if flag == 0: flag = 1 #연쇄 Flag
for x, y in array:
board[x][y] = '.'
down()
if flag == 1: cnt = cnt + 1 #연쇄 횟수 추가
elif flag == 0: break
print(cnt)
'알고리즘 스터디' 카테고리의 다른 글
[백준] 1806번 : 부분합 - Python(파이썬) (0) | 2021.05.11 |
---|---|
[백준] 2661번 : 좋은 수열 - Python(파이썬) (0) | 2021.05.11 |
[백준] 14002 : 가장 긴 증가하는 부분수열 - Python(파이썬) (0) | 2021.05.03 |
[백준] 10830 : 행렬 제곱 - Python(파이썬) (0) | 2021.04.06 |
[백준] 2839번 : 설탕배달 - Python(파이썬) (0) | 2021.03.30 |
Comments