백준 / 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로 나눈 몫이 구하는 뒤집은 최소 횟수가 된다.
백준 / 10815번 / 숫자 카드 / python 파이썬
·
코딩테스트/백준 (python)
문제 : https://www.acmicpc.net/problem/10815  코드num = int(input())num_list = list(map(int, input().split()))snum = int(input())snum_list = list(map(int, input().split()))dic = {}for s in snum_list: dic[s] = 0for n in num_list: if n in dic: dic[n] = 1for d in dic: print(dic[d], end=" ") 시간 초과를 방지하기 위해 딕셔너리를 사용해 상근이 이미 가지고 있는 숫자이면 딕셔너리의 값을 1로 변경하여 출력한다.