개발/문제풀이

[BOJ 27211, Python] 도넛 행성 풀이

2023. 2. 1. 18:07
반응형
import sys
from collections import deque
input = sys.stdin.readline

dx = [0,0,1,-1]
dy = [1,-1,0,0]

matrix = []

n,m = map(int,input().split())

for _ in range(n):
    matrix.append(list(map(int,input().split())))

count = 0

def bfs(sx,sy):
    queue = deque()
    queue.append((sx,sy))
    matrix[sy][sx] = 1
    while queue:
        nx,ny = queue.popleft()
        for i in range(4):
            tx,ty = nx+dx[i], ny+dy[i]
            if(tx == -1):
                tx = m - 1
            elif (tx == m):
                tx = 0
            
            if(ty == -1):
                ty = n - 1
            elif (ty == n):
                ty = 0

            if(matrix[ty][tx] == 0):
                queue.append((tx,ty))
                matrix[ty][tx] = 1

for y in range(n):
    for x in range(m):
        if (matrix[y][x] == 0):
            bfs(x,y)
            count += 1

print(count)

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

 

10026번: 적록색약

적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록)

www.acmicpc.net

적록색약과 거의 비슷한 문제이다.

 

주의점은 영역이 도넛 형태로 되어있어서 (토러스) 상하좌우로 계속 이동해도 면을 벗어나지 않는 다는 점이다.

 

기존의 BFS를 작성하는 코드에서

1. 영역이 벗어나는 에러 케이스를 잡는 부분을 버리고,

2. 벗어날 시 위치를 이동시켜주는 코드를 추가해준 뒤

3. 모든 영역을 돌면서 비어 있는 공간마다 BFS를 적용시키면 된다. (돌때마다 카운트를 세주는건 덤)

 

 

 

728x90

'개발 > 문제풀이' 카테고리의 다른 글

[카카오 2023 BLIND RECRUITMENT, Python] 이모티콘 할인행사 문제풀이  (0) 2023.03.07
[BOJ 27210, Python] 신을 모시는 사당 풀이  (0) 2023.02.01
백준 1697,12851,13913 파이썬 풀이 (숨바꼭질 1, 숨바꼭질 2, 숨바꼭질 3)  (0) 2021.04.08
백준 1927번 최소 힙 파이썬 문제풀이  (0) 2021.02.15
2월 1주차 백준 문제풀이 파이썬(듣보잡, 회의실 배정, 바이러스, 최대 힙, 집합 연결요소의 개수, 좌표압축)  (0) 2021.02.08
'개발/문제풀이' 카테고리의 다른 글
  • [카카오 2023 BLIND RECRUITMENT, Python] 이모티콘 할인행사 문제풀이
  • [BOJ 27210, Python] 신을 모시는 사당 풀이
  • 백준 1697,12851,13913 파이썬 풀이 (숨바꼭질 1, 숨바꼭질 2, 숨바꼭질 3)
  • 백준 1927번 최소 힙 파이썬 문제풀이
Junhyung-Choi
Junhyung-Choi
Junhyung-Choi
TheOldFace 개발 블로그
Junhyung-Choi
전체
오늘
어제
  • 분류 전체보기 (29)
    • 개발 (29)
      • 개발환경 설정 (4)
      • 문제풀이 (6)
      • Unity (2)
      • [시리즈] Unity 튜토리얼 (0)
      • Django (0)
      • [시리즈] DRF + React (8)
      • 이슈 해결 모음 (6)
      • [시리즈] Effective C++ (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • React
  • 백준
  • django
  • mediapipe
  • 개발
  • 알고리즘
  • 문제풀이
  • unity6
  • 쇼미더코드 3차
  • #ec++
  • 원티드
  • M1 MacBook
  • ec++
  • zsh
  • c++
  • BOJ
  • Shell
  • 쇼미더코드3차
  • Python
  • 파이썬

최근 댓글

최근 글

hELLO · Designed By 정상우.
Junhyung-Choi
[BOJ 27211, Python] 도넛 행성 풀이
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.