알고리즘 349

[프로그래머스] 단어 변환

# 해당 문제를 bfs로 풀었고 # 처음에는 bfs로 어떻게 접근해야하는지에 대한 고민을 많이 했다. # 그래서 dfs, bfs로 접근을 한다면 [ 변경되는 값, idx ]와 같은 걸 # 어떻게 문제에 반영할 수 있는지에 대해 생각해보기로 했다. from collections import deque def solution(begin, target, words): if target not in words: return 0 w_ln = len(words) que = deque([[begin,0]]) while True: b, idx = que.popleft() visit, flag = [0]*w_ln, False if b == target: break for i in range(w_ln): for j in ..

알고리즘 2023.06.30

[프로그래머스] 게임 맵 최단거리

from collections import deque # bfs와 delta 를 사용해서 풀기 # 나의 위치는 1,1 라고 하지만 배열상 (0,0) # 상대방은 해당 배열의 가장 마지막인 (n-1, m-1) def solution(maps): que, mx_X_ln, mx_Y_ln = deque([[0, 0, 1]]), len(maps[0])-1, len(maps)-1 # y,x,cnt visit = [[0]*(mx_X_ln+1) for _ in range(mx_Y_ln+1)] while que: y, x, cnt = que.popleft() if visit[y][x]: continue visit[y][x] = 1 if x == mx_X_ln and y == mx_Y_ln: return cnt for s..

알고리즘 2023.06.29

[프로그래머스] 타겟 넘버 | 깊이/너비 우선 탐색(DFS/BFS)

# dfs 방식으로 푼 코드 # bfs로 풀어보니 시간이 더 오래 걸렸다. def solution(numbers, target): answer = 0 stack = [[0,0]] # 시작 stack while stack: idx, hap = stack.pop() if idx < len(numbers): stack.append([idx+1, hap+numbers[idx]]) stack.append([idx+1, hap-numbers[idx]]) else: if hap == target: answer += 1 return answer # bfs 방식으로 푼 코드 def solution(numbers, target): answer = 0 que = deque([[0,0]]) # 시작 queue while qu..

알고리즘 2023.06.28

[백준] DFS와 BFS (1260)

# dfs는 stack, bfs는 queue 의 특징을 이용해서 푼 코드 # visit를 이용해서 방문 체크로 방문하지 않은 node의 경우에만 추가하는 형식으로 시간 줄임. import sys from collections import deque n, m, v = map(int,sys.stdin.readline().split()) _dict = {i:[] for i in range(n+1)} for i in range(m): s,e = map(int,sys.stdin.readline().split()) _dict[s].append(e) _dict[e].append(s) stack, s_dfs, que, q_bfs = [v], [], deque([v]), [] # dfs = stack, s_dfs, bf..

알고리즘 2023.06.28