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
- 아마존 웹 서비스
- Python
- 백준
- 다트
- Flutter
- 소프티어
- 개발
- java
- 안드로이드
- DART
- 코테
- 머신러닝
- 현대sw
- baekjoon
- aws
- SWIFT
- VSCode
- 자바
- 스위프트
- programers
- kotlin
- 파이썬
- 알고리즘
- softeer
- 코틀린
- MVVM
- Android
- 플러터
- 프로그래머스
- GDSC
Archives
- Today
- Total
조준장 개발자 생존기
[baekjoon] 백준 18405번(파이썬): 경제적 전염 본문
문제
18405번: 경쟁적 전염
첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치
www.acmicpc.net
알고리즘
- bfs 탐색을 통해 문제를 수행한다.
- 바이러스의 번호와 x좌표, y좌표, 시간을 리스트에 넣고 오름차순으로 정렬하여 큐에 넣는다.
- 큐에 넣은 리스트를 하나씩 탐색하여 주위에 있는 바이러스가 존재하지 않는 칸에 증식한다.
- 측정 시간과 현재 시간이 같으면 종료하여 특정 위치에 존재하는 바이러스의 번호를 출력한다.
코드
import sys
from collections import deque
# bfs 탐색
def bfs():
# 상/하/좌/우
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
queue = deque(temp)
while queue:
num, a, b, cnt = queue.popleft()
# 현재 시간과 측정 시간이 같으면 종료
if cnt == s:
# return graph[x - 1][y - 1] 왜 이건 안되는지 모르겠다.
break
for i in range(4):
nx = a + dx[i]
ny = b + dy[i]
# 범위 내에 있고 탐색하지 않았으면 탐색
if 0 <= nx < n and 0 <= ny < n and graph[nx][ny] == 0:
# 번호를 현재 바이러스 번호로 초기화
graph[nx][ny] = num
queue.append([num, nx, ny, cnt + 1])
# 특정 위치에 바이러스가 존재하는지 출력
# 0, 0부터 시작 했으므로 -1을 해준 좌표 확인
return graph[x - 1][y - 1]
n, k = map(int, sys.stdin.readline().split())
graph = [list(map(int, sys.stdin.readline().split())) for _ in range(n)]
s, x, y = map(int, sys.stdin.readline().split())
temp = [] # 바이러스가 들어있는 좌표 확인
for i in range(n):
for j in range(n):
if graph[i][j] != 0:
# 바이러스 번호, x좌표, y좌표, 시간
temp.append([graph[i][j], i, j, 0])
# 번호가 작은 바이러스 부터 확인하기 위해 오름차순 정렬
temp.sort()
print(bfs())
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 3184번(파이썬): 양 (0) | 2021.08.21 |
---|---|
[baekjoon] 백준 15900번(파이썬): 나무 탈출 (0) | 2021.08.20 |
[baekjoon] 백준 14716번(파이썬): 현수막 (0) | 2021.08.18 |
[baekjoon] 백준 16948번(파이썬): 데스 나이트 (0) | 2021.08.17 |
[baekjoon] 백준 16928번(파이썬): 뱀과 사다리 게임 (0) | 2021.08.16 |