DFS - 1012 , 1240

LEE'S·2023년 7월 28일
0

백준

목록 보기
18/27

👉 1012번

💡 문제 아이디어

  • 입력한 가로, 세로 길이로 0인 graph 를 만들고 k개의 배추가 심어진 위치를 for 문으로 해당 위치에 1을 저장한다
  • dfs() 를 통해 방문한 곳은 0으로 만들고 심어진 곳은 True 를 반환하여 True 인 곳은 cnt 에 1씩 더한다

👀 풀이

# 1012

import sys

N = int(sys.stdin.readline())
sys.setrecursionlimit(10**6)

answers = []

def dfs(x,y) : # x : 가로  /  y : 세로 
    if x<0 or y<0 or x>=m or y>=n :
        return False
    if graph[y][x] == 1 :
        graph[y][x] = 0
        dfs(x+1,y)
        dfs(x-1,y)
        dfs(x,y+1)
        dfs(x,y-1)
        return True
    return False 

for _ in range(N) :
    m,n,k = map(int, sys.stdin.readline().split())
    # m : 가로 (두번째)  /  n : 세로 (첫번째)
    graph = [[0] * m for _ in range(n)]
    for _ in range(k) :
        a,b = map(int, sys.stdin.readline().split())
        graph[b][a] = 1
    cnt = 0
    
    for i in range(m) :
        for j in range(n) :
            if dfs(i,j) :
                cnt += 1
                
    answers.append(cnt)

for a in answers :
    print(a)

⭐️⭐️⭐️⭐️⭐️

  • 이 문제의 핵심 중 하나는 sys.setrecursionlimit(10**6) 이다 ! 재귀의 깊이를 설정해주지 않으면 에러가 난다 !!
  • 개인적으로 이렇게 행렬로 나타낼 때 x,y 값이 헷갈리는데 이럴때는 주석으로 중간중간 체크하면서 풀기..!!!

👉 1240번

계속해서 시간초과로 골머리를 앓았던 문제,,,,,💦

💡 문제 아이디어


처음엔 이 문제가 무슨 뜻인지 모르겠어서,,,, 이런 식의 트리가 있다고 가정하고 대충 그리면서(?) 풀었다

👀 풀이

# 1240

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

graph = [[0]*(n+1) for _ in range(n+1)]

for _ in range(n-1) :
    x,y,d = map(int, sys.stdin.readline().split())
    graph[x][y] = d
    graph[y][x] = d

result = 0

def dfs(start , end , distance) : # start:시작하는 노드 / end:최종적으로 이동하려는 노드
    visited[start] = True
    global result 
    for i in range(1,n+1) :
        if graph[start][i] >0 and not visited[i] :
            if end == i :
                result = distance + graph[start][i]
            else :
                dfs(i,end,distance+graph[start][i])


for _ in range(m) :
    x,y = map(int, sys.stdin.readline().split())
    visited = [False] * (n+1)
    dfs(x,y,0)
    print(result)

  • 참고로 python3로 제출하니까 시간초과가 돼서 pypy 로 제출하였다
profile
기록 블로그

2개의 댓글

comment-user-thumbnail
2023년 7월 28일

좋은 정보 감사합니다

1개의 답글