목록알고리즘/dfs,bfs (5)
성장기록지
문제풀이 예시와 같은 ABCDE가 있다는 뜻은, 그래프 안의 특정 노드에서 5개 이상 연결되어있는 것이 있는지 묻는 것과 같다.따라서 dfs를 통해서 그래프들을 탐험하게 하였고, 그중에 5개의 이상 노드가 연결되어 있을 때 (cnt>=4 일 때)ans를 1로 만들어 1을 출력하게 하였다.from collections import defaultdictimport sysinput = sys.stdin.readlinelimit_number = 15000sys.setrecursionlimit(limit_number)dic = defaultdict(list)n,m = map(int,input().split())for i in range(m): a,b= map(int,input().split()) dic..
문제https://www.acmicpc.net/problem/2668풀이아래줄의 숫자가 윗줄과 같을 때, 그래프에 넣어준다고 하면 예시 문제는 다음과 같이 표현할 수 있다.1: [2, 3]2: []3: [1]4: [6]5: [4, 5]6: [7]7: [] 이 그래프를 그림으로 그린다면,아래와 같이 표시할 수 있게 된다. 정답인 1,3,5가 사이클로 돌아가는 것을 알 수 있다. 이 문제는 그래프를 dfs탐색하여, 사이클이 생길때마다 것을 정답 리스트에 보관하여 해결할 수 있는 것이다.풀이 코드from collections import defaultdictn=int(input())dict = defaultdict(list)def dfs(x, visited): visited.add(x) check..
⚾ 문제 ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종료되고, 두 팀이 공격과 수비를 서로 바꾼다. 두 팀은 경기가 시작하기 전까지 타순(타자가 타석에 서는 순서)을 정해야 하고, 경기 중에는 타순을 변경할 수 없다. 9번 타자까지 공을 쳤는데 3아웃이 발생하지 않은 상태면 이닝은 끝나지 않고, 1번 타자가 다시 타석에 선다. 타순은 이닝이 변경되어도 순서를 유지해야 한다. 예를 들어, 2이닝에 6번 타자가 마지막 타자였다면, 3이닝은 7번 타자부터 타석에 선다. 공격은 투수가 던진 공을 타석에 있는 타자가 치는 것이다. 공격 팀의 선수가 1루, 2루, 3루를..
이 문제는 간단한 백트래킹으로 해결할 수 있는 문제인데.1시간 반 동안 뚫어져라 쳐다보다 자력으로 해결 못하고 해설을 조금 참고하여서 풀고말았다. 왜 어려웠는지 미래의 나를 위해 작성하겠다. 전체 코드 visited=[]ans=[]n=int(input())sign_list=list(map(str, input().split()))def check(left, right, sign): if sign == ' right def back(count,temp): if count==n+1: a="" for i in temp: a=a+str(i) ans.append(a) # ans.append(temp.copy()) r..
https://youtu.be/7C9RgOcvkvo?si=XSCKpzmzEpYP8TI9&t=2113 이 BFS 강의를 듣지않고 글을 읽으면 이해가 안갑니다. 초기 세팅 1. 가로,세로,방문여부 리스트 2. 상과 왕의 x,y좌표 지정 3. 이동 횟수 초기값 지정 (count=1) 4.bfs에서 각각 3번 움직일 dx dy 생성 (bfs의 4~8번 설명에서 왜 이렇게 했나 알 수 있음) 5.상의 x,y좌표로 start 리스트 생성 6.bfs에 dx,dy와 start, visited(방문 여부 리스트),count를 넣어주고 bfs실행 #세로,가로 n=10 m=9 #방문여부 visited=[[False]*m for _ in range(n)] #상,왕의 x,y sangx,sangy=map(int,input().s..