DFS 5

[백준 알고리즘] 2583. 영역구하기

이 문제는 좌표로 되어 있었서 조금 헷갈렸다. 그렇지만 영역을 구하는 문제이기 때문에 직사각형이 상하나 좌우로 뒤집어도 영역의 갯수는 변하지 않기 때문에 다루기 편하게 상하로 뒤집은 다음 사용해서 영역을 구했다. M, N, K = map(int, input().split()) arr = [[0] * N for i in range(M)] areas = [] delta = [(1, 0), (-1, 0), (0, 1), (0, -1)] def DFS(i, j): stack = [(i, j)] arr[i][j] = 1 cnt = 1 while stack: r, c = stack.pop() for dt in range(4): nr = r + delta[dt][0] nc = c + delta[dt][1] if 0

[SWEA 1949] 등산로 - DFS, 파이썬

DFS 문제가 점차 익숙해지나 했더니 조금의 심화가 나오면 헤매게 된다. 아직 배운지 얼마 안됐고, 요새 장고를 배우느라.. 바빠져서 알고리즘 문제를 풀지 못하고 있다ㅠ 조급해하지 않기...ㅎㅎ 1일 1알을 목표로..!! 이전에 풀었던 DFS의 문제는 좌표 한개로부터 다른 좌표로 가는 거라 고려해야할 사항이 많지 않았다. 그런데 등산로 문제는 일단 시작하는 좌표가 여러개이고 언제끝날지 모른다. 그래서 끝나는 지점에서 1) 몇번 왔는지 체크해줘야 하며, 또한, 등산로를 한번 허용하는 길이만큼 줄일 때 줄인 것을 반영하되, 다른 등산로들에게는 영향을 주지 않아야 한다. 그래서 등산로 길이를 줄여야하는 상황에서는 등산로 길이를 줄인다음 temp 변수를 사용해 원상복구 시켜주었다. 처음에 deepcopy를 사용..

[백준 알고리즘] 10026. 적록색약 - 파이썬, DFS

🎈 처음에 sys.sys.setrecursionlimit(10000000) 설정해주지 않아 런타임에러가 걸렸다. 🎈 예제나 다른 복잡한 반례를 넣어봤을 때는 다 맞았는데, 제출하자마자 바로 틀렸다고 해서 처음에 조금 헤맸다. - > 원인을 찾아보니 for 문에서 iterator 반환 변수와 변수를 혼용해서 썼다.. 이런 기초적인 것들(?) 혹은 오타 때문에 생기는 오류들 때문에 때로는 문제푸는데 필요없이 오래걸리곤 한다... ㅠ 다신 까먹지 말자...ㅎㅎ 혹시 필요한 분들을 위해.. 제 오류를 찾은 반례도 함께 남겨 놓겠습니다.(제가 반례찾는다고 엄청 헤맸거든요..ㅠ) 2 BR GB 3 2 💻 딕셔너리를 사용해서 적록색약이 보는 R, G의 값은 동일하게, 일반 사람이 보는 R, G의 값을 다르게 설정했다..

[백준 알고리즘] 1012 유기농배추 _ 파이썬, dfs

https://acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 1) DFS를 사용해서 양배추 밭을 한번씩 돌아다니면서 배추가 있는지 판별했고 있는 경우 해당 배추와 인접해 있는 배추를 다 0으로 만들어 다시 방문하지 못하도록 했다. # M은 배추밭의 가로, N은 세로, k는 배추가 심어져 있는 위치의 개수 # 델타 이동을 통해서 인접한 배추밭들 세기 import sys delta = [(0, 1), (0, -1), (1, 0), (-1, 0)] for _ in range(int..

[백준 알고리즘] 2606. 바이러스 - DFS(깊이우선탐색)

2606. 바이러스 DFS 처음 배우고나서 제대로 푼 첫문제인데, 토할 뻔 했다... 문제 자체는 어렵지 않았으나, 백트래킹 배우다가 DFS문제 다시 풀려니 기억이 잘 나지 않아 꽤나 헤맸다.... 이제는 다시 안 헤매겠지...? ㅎㅎ 빨리 DFS 문제가 익숙해지는 날이 오길.... def DFS(v): visited[v] = 1 stack.append(v) while stack: for w in Graph[v]: if visited[w] == 0: visited[w] = 1 stack.append(v) v = w break else: v = stack.pop() return sum(visited)-1 V = int(input()) E = int(input()) Graph = [[] for i in ra..

카테고리 없음 2021.02.25