알고리즘 PS
다시 푼 문제들 (1)
explorer999
2024. 8. 23. 23:03
백준 복습
# #1000
a, b = map(int, input().split())
print(a+b)
# #1003
arr1=[1, 0, 1, [0]*38]
arr2=[0, 1, 1, [0]*38]
for i in range(3, 41):
arr1[i] = arr1[i-1]+arr1[i-2]
arr2[i] = arr2[i-1]+arr2[i-2]
n= int(input())
for _ in range(n):
a=int(input())
print(arr1[a], arr2[a])
#1009
n = int(input())
arr2 = [6, 2, 4, 8]
arr3 = [1, 3, 9, 7]
arr7 = [1, 7, 9, 3]
arr8 = [6, 8, 4, 2]
arr4 = [6, 4]
arr9 = [1, 9]
for _ in range(n):
a, b = map(int, input().split())
if a%10 == 1 or a%10 ==5 or a%10 == 6:
print(a%10)
elif a%10 == 2:
print(arr2[b%4])
elif a%10 == 3:
print(arr3[b%4])
elif a%10 == 7:
print(arr7[b%4])
elif a%10 == 8:
print(arr8[b%4])
elif a%10 == 4:
print(arr4[b%2])
elif a%10 == 9:
print(arr9[b%2])
else: #a%10==0:
print(10)
#1010 다리놓기 재원이
count = int(input())
for _ in range(count):
num1 = 1
num2 = 1
n, m = map(int, input().split())
for i in range(m-n+1, m+1):
num1 *= i
for j in range(1, n+1):
num2 *= j
print(num1//num2)
#1012
from collections import deque
case= int(input())
for _ in range(case):
m, n, k = map(int, input().split())
count = 0
dx = [0, 0, 1, -1]
dy = [1, -1, 0, 0]
graph = [[0]*m for i in range(n)]
for _ in range(k):
a, b = map(int, input().split())
graph[b][a] = 1
queue = deque([(m, n)])
while len(queue)>=1:
x, y = queue.popleft()
canmove=0
for i in range(4):
nx = x+dx[i]
ny = y+dy[i]
if nx<0 or nx>=m or ny<0 or ny>=n:
continue
if graph[ny][nx]==1:
queue.append((nx, ny))
canmove+=1
#만약 네 방면 모두 0이었다면?
if canmove == 0:
count+=1
print(count)