본문 바로가기

Algorithm 💡/DFS28

[백준 15684번] 사다리 조작 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net n, m, h = map(int,input().split()) answer = 4 def check(): # i번에서 시작한 세로선이 i번에서 끝나는지 확인하는 함수 for i in range(n): temp = i # 이동하는 세로선 위치 for j in range(h): if ladder[j][temp] == 1: # 오른쪽이 1인 경우(오른쪽으로 가로선이 쳐져있는 경우) temp += 1 elif temp > 0 and ladder[j][temp-1] ==.. 2023. 8. 21.
[백준 16724번] 피리 부는 사나이 16724번: 피리 부는 사나이 첫 번째 줄에 지도의 행의 수를 나타내는 N(1 ≤ N ≤ 1,000)과 지도의 열의 수를 나타내는 M(1 ≤ M ≤ 1,000)이 주어진다. 두 번째 줄부터 N개의 줄에 지도의 정보를 나타내는 길이가 M인 문자열이 주 www.acmicpc.net import sys sys.setrecursionlimit(10**5) n,m = map(int,input().split()) area = [list(sys.stdin.readline().rstrip()) for _ in range(n)] visited = [[-1]*m for _ in range(n)] count = 0 index = 0 def dfs(x,y,idx): global count if visited[x][y] !=.. 2023. 8. 20.
[백준 16637번] 괄호 추가하기 # 우선순위 X, 중첩괄호 X, 괄호 없어도 Ok # 괄호 안에는 연산자 1개만 가능 # 괄호를 적절히 추가해서 최대값 만들기 n = int(input()) formula = list(input()) # 최대값 초기화 max_value = float("-inf") # 주어진 값 2개를 연산하는 함수 def calculate(num1,operator,num2): if operator == '+': return num1 + num2 elif operator == '-': return num1 - num2 elif operator == "*": return num1 * num2 def dfs(index,value): global max_value # dfs로 마지막 값까지 계산을 마쳤을 경우 if index .. 2023. 8. 10.
[프로그래머스 Lv.3] 네트워크 def solution(n, computers): answer = 0 graph = [[] for i in range(n)] visited = [False]*n for i,row in enumerate(computers): for j,value in enumerate(row): if i != j and value == 1: graph[j].append(i) def dfs(n): if visited[n]: return False visited[n] = True for i in graph[n]: if not visited[i]: dfs(i) return True for i in range(n): if dfs(i): answer += 1 return answer 이번 문제는 컴퓨터의 개수 n과 연결에 대한 정.. 2023. 7. 31.
[프로그래머스 Lv.3] 여행경로 def solution(tickets): answer = [] graph = {} for i in range(len(tickets)): if tickets[i][0] not in graph: graph[tickets[i][0]] = [tickets[i][1]] else: graph[tickets[i][0]].append(tickets[i][1]) graph[tickets[i][0]].sort(reverse=True) print(graph) stack = ["ICN"] while stack: top = stack[-1] if top not in graph or not graph[top]: print("stack pop : ",stack[-1]) answer.append(stack.pop()) else: p.. 2023. 7. 30.
[HackerRank] Count Luck def countLuck(matrix, k): row = len(matrix) col = len(matrix[0]) nx = [-1,1,0,0] ny = [0,0,-1,1] start_x, start_y = 0, 0 count = 0 graph = [] for i in range(row): graph.append(list(matrix[i])) for i in range(row): for j in range(col): if graph[i][j] == 'M': start_x, start_y = i, j # Write your code here def dfs(area, x, y): # visited[x][y] = True if area[x][y] == '*': return True direct_count = .. 2023. 5. 19.