BOJ 21736 : 헌내기는 친구가 필요해

헌내기라는 표현은 참 마음아프다. 새내기에 반의어로 제시된 급조된 단어 일텐데, 사람들은 마음 아픈 표현을 아무렇지 않게 잘 만드는 것 같다. 근데 또 헌내기말고 그 특유의 오묘한 비참함을 표현할 단어가 없는 것 같다. 사람들이 잔인하다기 보단 한글의 표현이 너무 딥한 듯.


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

 

문자열로 구성된 전체 맵이 주어지면 사람한테 찾아가는 문제다. BFS가 직관적으로 떠올라서 해결하였다.

import sys
from collections import deque
input = sys.stdin.readline

fieldX, fieldY = list(map(int, input().split()))
isVisited = [[False for _ in range(fieldY)] for _ in range(fieldX)]
campusMap = []
meetCount = 0
q = deque()

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

for i in range(fieldX):
    campusMap.append(list(input().strip()))

for i in range(fieldX):
    for j in range(fieldY):
        if(campusMap[i][j] == 'I'):
            q.append([i, j])
            isVisited[i][j] = True
            break

while(q):
    x, y = q.popleft()
    if(campusMap[x][y] == 'P'):
        meetCount += 1

    for i in range(4):
        nx = x + dx[i]
        ny = y + dy[i]

        if(nx < 0 or nx >= fieldX or ny < 0 or ny >= fieldY):
            continue

        if(campusMap[nx][ny] == 'X'):
            continue

        if(isVisited[nx][ny]):
            continue

        q.append([nx, ny])
        isVisited[nx][ny] = True

if(meetCount == 0):
    print("TT")
else:
    print(meetCount)

 

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

BOJ 14502 : 연구소  (0) 2025.06.12
팰린드롬을 효율적으로 찾는 매내처 알고리즘  (0) 2025.05.22
BOJ 11659 : 구간 합 구하기 4  (0) 2025.05.20
BOJ 11727 : 2xn 타일링 2  (0) 2025.05.17
BOJ 11726 : 2xn 타일링  (0) 2025.05.17