알고리즘/알고리즘_백준 72

[Python][백준] 9084. 동전 / DP, 배낭 문제 (G5)

🔗링크 :  https://www.acmicpc.net/problem/9084➕ 문제 풀기 전 먼저 동전 문제를 풀기 전에 아래 예시를 이해해보자.  1,2,3원으로 7원까지의 만들 수 있는 경우의 수이다.     (0)  (1)  (2)  (3)  (4)  (5)  (6)  (7)  1:  0     1    1    1     1     1    1    12:  0     1    2    2     3     3    4    43:  0     1    2    3     4     5    7    8 먼저 1원부터 시작한다. 오직 1원으로 1~7원을 만들 수 있는 경우의 수는 모두 1이다.이제 2원과 3원으로 가면 위와 같은 경우의 수가 나온다. (해당 경우의 수는 하나 하나 직접 찾아서 ..

[Python][백준] 1541. 잃어버린 괄호 / 수학, Greedy, 문자열 (S2)

🔗링크 :  https://www.acmicpc.net/problem/1541🗒️파이썬 코드 풀이import sysinput = sys.stdin.readlineS = input().split('-')lst = []for i in range(len(S)): lst.append(sum(list(map(int,S[i].split("+")))))rs = lst[0]for ls in lst[1:]: rs -= lsprint(rs) 1. 보통 입력은 split()으로 하는데, 이 문제의 경우 '-' 로 나눠준다.(한 번 빼기가 시작되면 그 이후 모든 숫자가 한꺼번에 빼주는 것이 최소 값을 만드는 최선의 선택) 2. 한번 '-' 로 나눠준 lst를 이번에는 '+' 로 나눠주고, int 형으로 바꾸면서..

[Python][백준] 7569. 토마토 / 우선순위 큐, 다익스트라(G4)

🔗링크 :  https://www.acmicpc.net/problem/7569🗒️파이썬 코드 풀이import sysfrom collections import dequeM,N,H = map(int,sys.stdin.readline().split())graph = [[list(map(int,sys.stdin.readline().split())) for _ in range(N)] for _ in range(H)]di,dj,dh = [0,1,0,-1,0,0],[1,0,-1,0,0,0],[0,0,0,0,1,-1]def find_tomato(grp): q = deque([]) for h in range(H): for i in range(N): for j in r..

[Python][백준] 14888. 연산자 끼워넣기 / 브루트포스, 백트레킹 (S1)

🔗링크 :  https://www.acmicpc.net/problem/14888🗒️파이썬 코드 풀이import syssys.setrecursionlimit(100000) input = sys.stdin.readlineN = int(input())lst = list(map(int,input().split()))add,sub,mul,div = map(int,input().split())mx = -sys.maxsizemn = sys.maxsizedef dfs(n,rs,add,sub,mul,div): global mn global mx if n == N: mn = min(rs,mn) mx = max(rs,mx) return if add > ..

[Python][백준] 18352. 특정 거리의 도시 찾기 / BFS,최단경로 (S2)

🔗링크 :  https://www.acmicpc.net/problem/18352🗒️파이썬 코드 풀이import sysfrom collections import dequeinput = sys.stdin.readlineN,M,K,X = map(int,input().split())linked_lst = [[] for _ in range(N+1)]cost = [-1] * (N+1)for _ in range(M): s,e = map(int,input().split()) linked_lst[s].append(e)q =deque([X])cost[X] = 0while q: v = q.popleft() for e in linked_lst[v]: if cost[e] ==..

[Python][백준] 11725. 트리의 부모 찾기 / 우선순위 큐, 다익스트라(G4)

🔗링크 :  https://www.acmicpc.net/problem/1753🗒️파이썬 코드 풀이import sysimport heapqinput = sys.stdin.readlineV,E = map(int,input().split())K = int(input())linked_lst = [[] for _ in range((V+1))]for _ in range(E): u,v,w = map(int,input().split()) linked_lst[u].append((w,v))INF = sys.maxsizecost = [INF] * (V+1)heap = [[0,K]] cost[K] = 0while heap: ew,ev = heapq.heappop(heap) for nw,nv in..

[Python][백준] 11725. 트리의 부모 찾기 / 트리,재귀,DFS,BFS (S2)

🔗링크 :  https://www.acmicpc.net/problem/11725해당 문제는 BFS, DFS 방식 모두 다 풀 수 있다 .🗒️BFS 풀이import sysfrom collections import dequeN = int(sys.stdin.readline())node = [[] for _ in range(N + 1)]parents = [0] * (N + 1)parents[1] = 1for i in range(1, N + 1): node[i] = []for _ in range(N - 1): a, b = map(int, sys.stdin.readline().split()) node[a].append(b) node[b].append(a)q = deque([1])while ..