dfs 5

[Python] 깊이 우선 탐색, DFS (Depth First Search) 알고리즘 파이썬 코드

알고리즘 풀이를 놓은 지 시간이 좀 흐르니까 자신만만하던 문제들도 쉽게 풀지 못하는 지경에 이르렀다. 아무래도 정리를 하면서 이해를 하는 시간을 한 번 더 가져야 할 것 같아서 문제 풀이에 기본이 되는 알고리즘들을 다시 코드를 작성하면서 복기해보려고 한다.  자 가장 쉬운 그래프 탐색법인 DFS부터 알아보자수많은 트리, 그래프를 순회하는 방법 중 기본이 되는 알고리즘이다. DFS (Depth First Search)? 이름부터 깊이를 우선하여 서치한다는 의미를 담고 있다. 시작부터 끝까지 '깊이'를 우선하여 탐색한다. 처음에는 깊이를 우선한다는 게 이해가 잘 되지 않을 수 있다. 쉽게 이해하기 위해 미로를 탐험한다고 가정해보자. 무수히 많은 갈림길이 존재할 것이다. 이런 미로를 모두 정복하기 위해 한 방..

Algorithm/Algorithm 2024.10.10

[백준 BOJ] 13460 구슬 탈출 2 (python)

문제 출처 : https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 🔥 작성 코드 def sol(rsi, rsj, bsi, bsj, cnt): global result # 최소값이 아니라면 종료 if result 10: return # 4방향으로 기울이기 for d in range(4): flag = 0 rni = rsi + di[d] rnj = rsj + dj[d] bni = bsi + di[d] ..

Algorithm/BAEKJOON 2022.04.28

[swea] 4366. 정식이의 은행업무 python

문제 출처 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWMeRLz6kC0DFAXd&categoryId=AWMeRLz6kC0DFAXd&categoryType=CODE&problemTitle=%EC%A0%95%EC%8B%9D%EC%9D%B4&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 🔥 작성코드 # 한 자리를 바꾼 2진수와 3진수 값 x, y def check(x, y)..

Algorithm/SWEA 2022.03.25

[백준 BOJ] 17070 파이프 옮기기 1 (python)

문제 출처 : https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net dfs문제처럼 생겨서 바로 도전해보았으나 시간초과로 실패! pypy로는 정답이 나왔지만 너무 느려서 문제 분류를 보고 dp로 재도전했습니다. 🔥 DFS 코드 (시간 초과) def sol(i, j, flag): global cnt # 끝에 도착하면 결과값 1 증가 if i == N-1 and j == N-1: cnt += 1 return # 가로 세로 끝 부분..

Algorithm/BAEKJOON 2022.03.14

[SWEA] [파이썬 S/W 문제해결 기본] 5일차 - 미로 (python)

https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 🔥 작성 코드 T = int(input()) for test_case in range(1, T+1): N = int(input()) arr = [input() for _ in range(N)] v = [[0 for _ in range(N)] for _ in range(N)] for i in range(N): for j in range(N): v[i][j] = int(arr[i][j]) if arr[i][j] == '2': ni = i nj ..

Algorithm/SWEA 2022.02.24