알고리즘 (27) 썸네일형 리스트형 백준 1003 - 피보나치 함수 문제https://www.acmicpc.net/problem/1003 풀이# 백준 / 실버3 / 피보나치 함수import sysdp = [0] * 41dp[0] = 1dp[1] = 1for i in range(2,41): dp[i] = dp[i-1] + dp[i-2]for _ in range(int(sys.stdin.readline())): n = int(sys.stdin.readline()) if n == 0 : print(dp[0],0) elif n == 1: print(0, dp[1]) else: print(dp[n-2], dp[n-1]) 그냥 피보나치를 구현하면 풀리지 않음 dp를 이용하는데 문제에서는 0의 출력 횟수, .. 백준 2579 - 계단 오르기 문제https://www.acmicpc.net/problem/2579 풀이# 백준 / 실버3 / 계단 오르기n = int(input())stairs = [0] * 301for i in range(1,n+1): stairs[i] = int(input()) dp = [0] * 301dp[1] = stairs[1]dp[2] = stairs[1] + stairs[2]dp[3] = max(stairs[1] + stairs[3], stairs[2] + stairs[3])for i in range(4, n+1): dp[i] = max(dp[i-3] + stairs[i-1] + stairs[i], dp[i-2] + stairs[i])print(dp[n]) dp로 풀 수 있는 문제이다. 점화식을 세.. 백준 1120 - 문자 문제https://www.acmicpc.net/problem/1120 풀이# 백준 / 실버4 / 문자열import sysX,Y = map(str, sys.stdin.readline().split())def diff(x,y): cnt = 0 min_val = 100000 if len(X) == len(Y): for i in range(len(x)): if x[i] != y[i]: cnt += 1 if cnt len(y): break for j in range(len(x)): z = y[i:i+len(x)] .. 백준 28278 - 스택 2 문제https://www.acmicpc.net/problem/28278 풀이# 백준 / 실버4 / 스택 2import sysstack = []for _ in range(int(sys.stdin.readline())): ope = list(map(int,sys.stdin.readline().split())) if ope[0] == 1: stack.append(ope[1]) elif ope[0] == 2: if stack: print(stack.pop()) else: print(-1) elif ope[0] == 3: print(len(stack)) elif ope[0] == 4: .. 백준 1920 - 수 찾기 문제https://www.acmicpc.net/problem/1920 풀이# 백준 / 실버4 / 수 찾기# 이진탐색 알고리즘# 반드시 찾는 list가 정렬된 상태여야 한다.def binary_search(target,list1): start = 0 end = len(list1)-1 while start target: end = mid - 1 else: start = mid + 1 return 0N = int(input())list1 = list(map(int,input().split()))M = int(input())list2 = list(map(int,input().split()))list.. 백준 11651 - 좌표 정렬하기 2 문제https://www.acmicpc.net/problem/11651 풀이# 백준 / 실버5 / 좌표 정렬하기 2n = int(input())dot = []for _ in range(n): dot.append(list(map(int,input().split()))) dot.sort(key=lambda x : (x[1],x[0]))for i in dot: print(f'{i[0]} {i[1]}') sort의 key=lambda만 잘 기억하면 쉽게 풀 수 있다. 백준 2485 - 가로수 문제https://www.acmicpc.net/problem/2485 풀이# 백준/실버4/가로수# 유클리드 호제법# a,b가 있을 때, a를 b로 나눈값을 b, 기존의 b를 a로 바꾸면서# b가 0이 될때까지 반복한다.def gcd(a,b): while b > 0: a,b = b,a % b return an = int(input())data = []# 입력값for _ in range(n): data.append(int(input()))# 가로수 사이의 격차를 저장diff = []for i in range(1,len(data)): diff.append(data[i] - data[i-1])# 격차 간의 최대공약수를 구한다g = diff[0]for j in rang.. 백준 1246 - 온라인 판매 문제경래는 닭을 기르는데 올 겨울 달걀 풍년으로 함박 웃음을 짓고 있다. 그리고 이 달걀을 영양란으로 둔갑하여 옥션에 판매하려한다.경래는 총 N개의 달걀이 있고, 그의 잠재적인 고객은 총 M명이다. 그리고 각각의 i번째 고객은 각자 달걀 하나를 Pi 가격 이하로 살 수 있다고 밝혔다.경래는 영양란이라 속인 죄책감에 한 고객에게 두 개 이상의 달걀은 팔지 않기로 하였다. 하지만 위의 규칙 하에 수익은 최대로 올리고 싶기에 얼마로 팔지 고민하고 있다. 즉, A가격에 달걀을 판다고 하면 Pi가 A가격보다 크거나 같은 모든 고객은 달걀을 산다는 뜻이다. (물론 달걀 총 수량을 초과하여 팔 수 는 없다)문제는 이러한 경래를 도와 최대 수익을 올릴 수 있는 달걀의 가장 낮은 가격을 책정하는 것이다.입력첫째 줄에 정.. 이전 1 2 3 4 다음