일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 뒤로가기
- 코틀린
- 9095
- LCS
- 1260
- 1182
- 6603
- lcm
- 매일11시
- 11057
- expo
- 순열
- 파이썬
- 백준
- 안드로이드
- Android
- Python
- 11054
- 앱
- 코테
- itertools
- permutation
- 11053
- 11기
- Combination
- 괄호
- 나머지
- 홈화면
- 최소공배수
- Kotlin
Archives
- Today
- Total
황소개발자
백준 6087 파이썬 python : 레이저통신 @@황소처럼 우직하게@@ 백준님은 대단하신분이다.. 본문
반응형
정말 대단하신 분이다..
import sys
input = sys.stdin.readline
w, h = map(int, input().split())
mat = []
for i in range(h):
mat.append(input())
mirror = [[] for _ in range(h)]
C = []
for i in range(h):
for j in range(w):
if mat[i][j] == 'C':
C.append([i, j])
if mat[i][j] != '*':
mirror[i].append(-1)
else:
mirror[i].append(mat[i][j])
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
def bfs(start_y, start_x):
q = []
q.append([start_y, start_x])
mirror[start_y][start_x] = 0
while q:
y, x, = q.pop(0)
for i in range(4):
ny = y + dy[i]
nx = x + dx[i]
while 0 <= ny < h and 0 <= nx < w:
if mirror[ny][nx] == '*':
break
if mirror[ny][nx] == -1:
mirror[ny][nx] = mirror[y][x] + 1
q.append([ny, nx])
nx += dx[i]
ny += dy[i]
bfs(C[0][0], C[0][1])
# for i in range(h):
# for j in range(w):
# print(str(mirror[i][j]).rjust(5), end=' ')
# print()
print(mirror[C[1][0]][C[1][1]] - 1)
반응형
'백준 문제 풀이' 카테고리의 다른 글
백준 11279 파이썬 python : 최대 힙 @@황소처럼 우직하게@@ heapq 사용 (0) | 2020.04.21 |
---|---|
백준 14391 파이썬 python : 종이 조각 @@황소처럼 우직하게@@ 비트연산을 모른다면 넌 아직이다.. (0) | 2020.04.20 |
백준 15558 파이썬 python : 점프 게임 @@황소처럼 우직하게@@ 이거이거 BFS 큐 두개로 푸는것이여! (0) | 2020.04.18 |
백준 12851 파이썬 python : 숨바꼭질 2 @@황소처럼 우직하게@@ 어여와 반례들 있응께 (0) | 2020.03.27 |
백준 10422 파이썬 python : 괄호 @@황소처럼 우직하게@@ dp로 푸는 방법!! (0) | 2020.03.26 |
Comments