알고리즘/Python

[백준] 21736 - 헌내기는 친구가 필요해

9__bin 2023. 6. 29. 18:00

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

 

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

2020년에 입학한 헌내기 도연이가 있다. 도연이는 비대면 수업 때문에 학교에 가지 못해 학교에 아는 친구가 없었다. 드디어 대면 수업을 하게 된 도연이는 어서 캠퍼스 내의 사람들과 친해지고

www.acmicpc.net

문제 한줄 이해

-그래프의 특정 위치에서 이동하면서 친구 만나기

 

생각난 풀이

1번째 방법: 전형적인 dfs, bfs 문제라 생각이 들어 dfs를 활용해 문제를 풀었다.

import sys
n, m = map(int,sys.stdin.readline().split())
graph = []

for i in range(n):
    graph.append(list(map(str, sys.stdin.readline().rstrip())))

#먼저 도연이 위치 찾기
for i in range(n):
    for j in range(m):
        if graph[i][j] == 'I':
            nowx = i
            nowy = j
            break
        
def dfs(x,y):
    global cnt
    # 그래프 범위를 벗어나면 종료
    if x<0 or y<0 or x>n-1 or y>m-1:
        return
    
    # I,O,P면 탐색 가능
    if graph[x][y] == 'I' or graph[x][y] == 'O' or graph[x][y] == 'P':
        if graph[x][y] == 'P':
            cnt +=1
        graph[x][y] = -1
        dfs(x+1,y)
        dfs(x,y+1)
        dfs(x-1,y)
        dfs(x,y-1)
        
cnt = 0        
dfs(nowx,nowy)
if cnt == 0:
    cnt = 'TT'
print(cnt)

'알고리즘 > Python' 카테고리의 다른 글

[백준] 1389 - 케빈 베이컨의 6단계 법칙  (0) 2023.07.02
[백준] 1074 - Z  (0) 2023.07.02
[백준] 18870 - 좌표압축  (0) 2023.06.28
[백준] 11724-연결 요소의 개수  (0) 2023.06.28
[백준] 2805-나무 자르기  (0) 2023.06.27