https://www.acmicpc.net/problem/21736
21736번: 헌내기는 친구가 필요해
2020년에 입학한 헌내기 도연이가 있다. 도연이는 비대면 수업 때문에 학교에 가지 못해 학교에 아는 친구가 없었다. 드디어 대면 수업을 하게 된 도연이는 어서 캠퍼스 내의 사람들과 친해지고
www.acmicpc.net
이동가능한 모든 좌표 중에서 P의 개수를 구하는 문제이다.
import sys
def find_me(): # 현재 나의 위치를 찾아줄 함수
for x in range(N):
for y in range(M):
if campus[x][y] == 'I':
return (x, y) # 현재 좌표 반환
N, M = map(int, input().split())
campus = sys.stdin.read().splitlines()
move = [(-1, 0), (0, -1), (1, 0), (0, 1)] # 이동 가능한 경우의 수
stack = [find_me()] # 나의 위치를 찾아 스택에 넣어줌
flag = [[True]*M for _ in range(N)] # 방문한 위치를 체크하기 위한 리스트
cnt = 0 # P 개수 카운트
while stack:
dx, dy = stack.pop() # 이동할 좌표를 stack에서 하나씩 가져옴
for xy in move: # 상하좌우에 대해 확인
x = dx + xy[0]
y = dy + xy[1]
if (0 <= x < N) and (0 <= y < M): # 좌표가 캠퍼스 범위내에 있는지 체크
if (campus[x][y] != 'X') and flag[x][y]:
stack.append((x, y))
flag[x][y] = False # 한번 방문한 곳은 재방문 하지 않음
if campus[x][y] == 'P':
cnt += 1
if cnt:
print(cnt)
else:
print('TT')
[백준/BOJ] #1124 언더프라임.python(파이썬) (0) | 2021.08.19 |
---|---|
[백준/BOJ] #9205 맥주마시면서 걸어가기.python(파이썬) (0) | 2021.08.07 |
[백준/BOJ] #1436 영화감독 숌.python(파이썬) (0) | 2021.08.05 |
[백준/BOJ] #2839 설탕배달.python(파이썬) (0) | 2021.08.03 |
[백준/BOJ] #22352 항체 인식.python(파이썬) (0) | 2021.08.02 |