코딩/백준 [ALGORITHM](65)
-
백준 [ALGORITHM] - 제로 (10773)
간단한 스택 구현 문제. k = int(input()) lst = [] for i in range(k): n = int(input()) if n == 0: lst.pop() else: lst.append(n) print(sum(lst))
2023.04.19 -
백준 [ALGORITHM] - 큐 (10845)
import sys N = int(sys.stdin.readline()) stack = [] def push(n): stack.append(n) def pop(): if len(stack) != 0: a = stack[0] stack.pop(0) print(a) else: print("-1") def size(): print(len(stack)) def empty(): if len(stack) == 0: print("1") else: print("0") def front(): if len(stack) == 0: print("-1") else: print(stack[0]) def back(): if len(stack) == 0: print("-1") else: print(stack[-1]) func_dic..
2023.04.18 -
백준 [ALGORITHM] - 최대공약수와 최소공배수 (2609)
import math n,n2 = map(int,input().split()) a = math.gcd(n,n2) b = math.lcm(n,n2) print(a) print(b) MATH 라이브러리로 해결하긴 했는데 문제가 원하는 방향은 유클리드 호제법을 이용한 해결이기 때문에 이를 이용한 방법으로도 해결한 뒤 다시 포스팅 해볼 예정
2023.04.17 -
백준 [ALGORITHM] - 피보나치 수2 (2748)
n = int(input()) dp = [0 for _ in range(n+1)] #[0,1,0,0,0] dp[0] = 0 dp[1] = 1 def dynamic(n): for i in range(2, n+1): dp[i] = dp[i-1] + dp[i-2] return dp[n] print(dynamic(n)) 기초적인 dp문제이다. 피보나치 수를 재귀로 구현하면 배열에서 입력받은 i의 함수 [i-2] + [i-1] 를 재귀적으로 호출해서 계산해야한다. 이는 매우 비효율적이며 구해야하는 값이 커질수록 시간도 오래 걸린다. 따라서 dp를 이용하여 값을 저장하며 진행하면 시간이 더욱 단축된다.
2023.04.16 -
백준 [ALGORITHM] - BABBA (9625)
동적 계획법을 이용해 해결해야하는 문제이다. 동적 계획법을 공부하기 위해 풀었는데 난이도도 적당하고 개념을 잘 익히고 응용 할 수 있었다 n = int(input()) s =[[0,0] for _ in range(n+1)] s[0] = [1,0] s[1] = [0,1] for i in range(2,n+1): s[i][0] = s[i-2][0] +s[i-1][0] s[i][1] = s[i-2][1] +s[i-1][1] s = ' '.join(map(str, s[n])) print(s)
2023.04.16 -
백준 [ALGORITHM] - 스택 (10828)
import sys N = int(sys.stdin.readline()) stack = [] def push(n): stack.append(n) def pop(): if len(stack) != 0: a = stack[-1] stack.pop() print(a) else: print("-1") def size(): print(len(stack)) def empty(): if len(stack) == 0: print("1") else: print("0") def top(): if len(stack) == 0: print("-1") else: print(stack[-1]) func_dict = { "push" : push, "pop" : pop, "size" : size, "empty" : empty, "t..
2023.04.15