dfs 6

[2644] 촌수 계산하기 in python

 dfs, bfs 두 방식 모두 풀 수 있었던 문제! 처음엔 dfs를 총 2번 돌려서 촌수를 더하는 방식으로 계산하려고 했으나 너무 비효율적인 것 같아서 패쓰.. 이 촌수 그래프는 무방향 그래프이니까 array[자식]=부모 array[부모]=자식 이런식으로 양쪽의 값을 각각 넣어줘야한다. import sys sys.setrecursionlimit(300000) n=int(input()) yeon,kim=map(int,input().split()) m=int(input()) array=[[] for _ in range(n+1)] visited=[0 for _ in range(n+1)] for _ in range(m): p,c=map(int,input().split()) array[p].append(c) ..

[10451] 순열 사이클 in python

처음엔 dfs 를 떠올리지 않고 반복문만으로 해결하려고 했으나,, 하다보니 재귀로 하는 게 더 편할 것 같아서 노선 변경!! 런타임 에러가 나서 sys.setrecursionlimit(2000)으로 최대 재귀를 늘려주었더니 해결! dfs 를 이용해서 문제를 풀어주었음! visited는 방문한 노드의 리스트를 저장해두는 리스트 circle은 현재 서클에 해당하는 리스트 import sys sys.setrecursionlimit(2000) for _ in range(int(input())): n = int(input()) array = list(map(int, input().split())) array.insert(0,0) visited = set() answer = 0 idx = 1 def dfs(node..

[n13565] 침투 in python

dfs로 푼 문제! 그냥 끝까지 탐색하고 더이상 탐색할 수 없으면 다시 돌아오면 그만! 바깥쪽에 해당하는 0번째 줄만 dfs문을 돌린다. 그리고 맨 마지막줄에 2가 있으면 안쪽까지 탐색이 되는거니까 YES를 출력해주면 되는 문제 그런데 이렇게 하니까 시간이 오래걸렸다 (1243ms) ㅠㅠ import sys sys.setrecursionlimit(3000000) m, n = map(int, input().split()) # m = 행, n = 열 array = [list(map(int, list(input()))) for _ in range(m)] dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def dfs(row, col): array[row][col] = 2 for i in ra..

[n2422] 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 in python

이 문제를 보자마자 dfs로 풀어야겠다고 생각함. 일단 조합하면 안되는 숫자들은 딕셔너리에 저장했다. 1->2인 경우 서로 선택하면 안되는거니까 딕셔너리에 각각 값을 넣어주었다. * 딕셔너리 value값 여러개일 때 처리해줘야 하는 방법 * 딕셔너리의 value값이 여러개일 경우 dic[i] = []로 초기화하고 값은 append를 이용해서 넣어주면 된다. 아이스크림이 총 5개 있다. 1 2 3 4 5 그 중에 3개의 아이스크림을 선택하는 경우의 수를 구하는 문제이다. 근데 조합해선 안될 아이스크림들이 있다. 1번,2번 아이스크림 3,4번 아이스크림 1,3번 아이스크림 -> 즉 1번 아이스크림은 2번,3번과 같이 선택될 수 없다. 2번,3번 아이스크림도 1번 아이스크림과 선택될 수 없다. 이 코드의 핵심..

[n1058] 친구 in python

아휴 이 문제는 이해하는 것부터 힘들었다 ^.^; 말장난에 놀아난 1인.. 나야 나.. visited를 1차원 배열로 하려고 했는데 계속 오류가 났다 결국 더 보기 편하게 2차원으로 걍 쪼개버렸다 A B C 친구가 있다. 2-친구가 되기 위한 조건은 총 2가지 1. A, B가 서로 친구 or 2. A와 C, B와 C가 친구인 경우 아래 예시로 살펴보면 A와 B가 친구 -> 2-친구 조건1 만족o A와 C가 친구 x -> 조건1 만족x, 그러면 조건 2를 살펴본다. A와 B가 친구이고 C와 B가 친구이므로 A와 C도 친구가 될 수 있다. -> 조건2 만족o ** fucn 함수 안에 있는 조건문에서 인덱스 순서가 바뀌어도 상관 없었다 A->B랑 친구이면 B->A도 친구이기 때문! # 두사람이 친구 or (A..

[이것이 코딩테스트다 Ch5 ] DFS와 BFS

1. 스택과 큐 (1) 스택 - 후입선출 - 삽입은 append(n) , 삭제는 pop() (2) 큐 - 선입선출 - 파이썬에선 큐 구현을 위해 deque 라이브러리를 사용한다. - 삽입 append(n), 삭제 popleft() - queue 라이브러리 대신 deque 라이브러리를 사용하는 이유? (from collections import deque) >> deque는 스택과 큐의 장점을 모두 채택한 것이라서 데이터를 넣고 빼는 속도가 훨씬 빠르기 때문! >> 코테에서는 collections 모듈과 같은 기본 라이브러리 사용을 허용함 : 코테 라이브러리에 대한 내용이 자세히 잘 나와있어서 주소 첨부! https://velog.io/@koyo/python-docs-6 [내가 보려고 적는 파이썬] 주요 ..