백준 / 7576번 / 토마토 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/7576  코드import sysfrom collections import dequeinput = sys.stdin.readlinem, n = map(int, input().split())tomato = []queue = deque()dx = [-1, 1, 0 ,0]dy = [0, 0, -1, 1]for _ in range(n): tomato.append(list(map(int, input().split())))for i in range(n): for j in range(m): if tomato[i][j] == 1: queue.append([i, j])def BFS(): while queue..
백준 / 1463번 / 1로 만들기 / DP / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/1463  코드 import sysn = int(sys.stdin.readline())d = [0] * (n + 1)for i in range(2, n + 1): d[i] = d[i-1] + 1 if i % 3 == 0: d[i] = min(d[i], d[i//3] + 1) if i % 2 == 0: d[i] = min(d[i], d[i//2] + 1)print(d[n]) DP를 이용해 모든 숫자에 대해 /3, /2, -1을 하는 함수를 호출할 필요없이 이전에 계산한 정보들을 사용하여 푸는 것이 핵심이다. DP 테이블에 해당 숫자를 만드는데 필요한 최소 연산 횟수를 갱신해가며 저장하면 d[n]에는 ..
백준 / 2740번 / 행렬 곱셈 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/2740  코드N, M = map(int, input().split())matA = []matB = []for _ in range(N): matA.append(list(map(int, input().split())))M, K = map(int, input().split())for _ in range(M): matB.append(list(map(int, input().split())))matrix = [[0 for _ in range(K)] for _ in range(N)]for n in range(N): for k in range(K): for m in range(M): matrix[n][k..
백준 / 1260번 / DFS와 BFS / DFS, BFS / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/1260  코드 from collections import dequeimport sysinput = sys.stdin.readlinen, m, v = map(int, input().split())graph = [[] for _ in range(n+1)]for _ in range(m): a, b = map(int, input().split()) graph[a].append(b) graph[b].append(a)def DFS(start): visited[start] = True print(start, end = " ") for i in graph[start]: if not visited[i]: ..
백준 / 11047번 / 동전 0 / Greedy Algorithm / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/11047  코드 import sysinput = sys.stdin.readlinen, k = map(int, input().split())coin = []for i in range(n): coin.append(int(input()))count = 0for i in reversed(range(n)): count += k // coin[i] k %= coin[i]print(count) 큰 동전이 작은 동전의 배수가 된다는 조건이 있으므로, 그리디 알고리즘을 사용하여 풀 수 있다.count에 가장 큰 동전으로 나눈 몫을 더해주고, 그 나머지를 k로 두며 반복하면 동전 수의 최솟값을 구할 수 있다.
백준 / 7785번 / 회사에 있는 사람 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/7785  코드 import sysinput = sys.stdin.readlinenum = int(input())name_list = {}for i in range(num): name, status = map(str, input().split()) if status == "enter": name_list[name] = status else: del name_list[name]rem = sorted(name_list, reverse = True)for n in rem: print(n)
백준 / 9012번 / 괄호 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/9012  코드n = int(input())for i in range(n): stack = [] s = input() for j in s: if j == '(': stack.append(j) elif j == ')': if stack: stack.pop() else: print("NO") break else: if stack: print("NO") else: print("YES")
백준 / 1439번 / 뒤집기 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/1439  코드s = input()count = 0for i in range(len(s)-1): if s[i] != s[i+1]: count += 1print((count + 1) // 2)  연속된 숫자가 변하는 횟수에서 1을 더한 후 2로 나눈 몫이 구하는 뒤집은 최소 횟수가 된다.