티스토리 뷰
- 문제 링크
https://www.acmicpc.net/problem/10026
- 풀이
설명을 보면, 적록색약인 경우에는 빨강-초록을 하나로 본다. 그래서 적록색약이 아닌 경우를 첫번째로 탐색하며 현재 좌표의 색상과 상하좌우 좌표에 있는 색상이 같으면 bfs로 넣어준다. 최초 bfs 탐색이 끝나면 전체 graph를 돌면서 색이 G인 것을 R로 변경해주면 된다. 그 뒤에 visited 배열을 새로 만들고 두번째로 적록색약인 경우를 탐색하면 된다.
- 코드
import sys
from collections import deque
input = sys.stdin.readline
dx = [0,0,-1,1]
dy = [-1,1,0,0]
one, two = 0, 0
def bfs(x, y):
visited[x][y] = 1
queue = deque()
queue.append((x, y))
while queue:
a, b = queue.popleft()
for i in range(4):
nx = a + dx[i]
ny = b + dy[i]
if 0 <= nx < N and 0 <= ny < N:
if visited[nx][ny] == 0:
if graph[nx][ny] == graph[a][b]:
visited[nx][ny] = 1
queue.append((nx,ny))
N = int(input())
visited = [[0] * N for _ in range(N)]
graph = [list(map(str, input().rstrip())) for _ in range(N)]
for i in range(N):
for j in range(N):
if visited[i][j] == 0:
bfs(i, j)
one += 1
for i in range(N):
for j in range(N):
if graph[i][j] == 'G':
graph[i][j] = 'R'
visited = [[0] * N for _ in range(N)]
for i in range(N):
for j in range(N):
if visited[i][j] == 0:
bfs(i, j)
two += 1
print(one, two)
알고리즘.. 매우 오랜만이다. 사실 요즘 번아웃 비슷하게 온 것도 있고 다른 일로도 넘 바빴다 보니 개발 공부를 거의 못했다.. 지금부터라도 다시 차근차근 시작해나가야겠다 ! 꾸준히 하자 !! 아자아자
리액트는 언제하지? ㅠㅠ
'Algorithm > BOJ' 카테고리의 다른 글
| [BOJ][Python] 백준 6986번 : 절사평균 (0) | 2023.06.13 |
|---|---|
| [BOJ][Python] 백준 1743번 : 음식물 피하기 (0) | 2023.05.31 |
| [BOJ][Python] 백준 2108번 : 통계학 (0) | 2023.04.13 |
| [BOJ][Python] 백준 2589번 : 보물섬 (0) | 2023.04.11 |
| [BOJ][Python] 백준 11724번 : 연결 요소의 개수 (0) | 2023.04.06 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 최근검색 기능
- 마법사 상어
- 데이크스트라
- 구현
- 리액트 최근검색
- 리코쳇 로봇
- 백준 10026
- 백준
- 리액트
- 서강그라운드
- 보정평균
- BFS
- 레벨 2
- 1270
- boj 2589
- Python
- boj 10026 python
- 폰트 최적화
- 도넛 행성
- BOJ
- 실버3
- 14938
- 21610
- 리액트 츨겨찾기
- 알고리즘
- 파이썬
- WOFF2
- opgg #클론코딩 #할수있다
- 6986
- 목데이터
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함