Upload files to "백준"

This commit is contained in:
2026-04-11 11:56:14 +09:00
parent 1ff6439502
commit bace85de4e
5 changed files with 135 additions and 0 deletions

21
백준/10844.py Normal file
View File

@@ -0,0 +1,21 @@
import sys
input = sys.stdin.readline
N = int(input())
a = []
for i in range(N):
a.append(list(map(int, input().split())))
DP_table = [[0 for _ in range(3)] for _ in range(N+1)]
DP_table[0][0] = a[0][0]
DP_table[0][1] = a[0][1]
DP_table[0][2] = a[0][2]
for i in range(1, N):
for j in range(3):
DP_table[i][j] = min(DP_table[i-1][(j+1)%3], DP_table[i-1][(j+2)%3]) + a[i][j]
print(min(DP_table[N-1][0],DP_table[N-1][1],DP_table[N-1][2]))

44
백준/10868.py Normal file
View File

@@ -0,0 +1,44 @@
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
height = 0
length = n
while length != 0:
length //= 2
height += 1
tree_size = pow(2, height+1)
tree_start_index = pow(2, height) - 1
tree = [sys.maxsize] * (tree_size+1)
for i in range(n):
tree[tree_start_index+i+1] = int(input())
temp = n + tree_start_index
while temp != 1:
tree[temp//2] = min(tree[temp//2], tree[temp])
temp-=1
def find_tree(a,b):
result = sys.maxsize
while a<=b:
if (a%2==1):
result = min(result, tree[a])
a+=1
if (b%2==0):
result = min(result, tree[b])
b-=1
a //= 2
b //= 2
return result
for _ in range(m):
s_i, e_i = map(int, input().split())
s_i += tree_start_index
e_i += tree_start_index
print(find_tree(s_i, e_i))

12
백준/10989.py Normal file
View File

@@ -0,0 +1,12 @@
import sys
N = int(sys.stdin.readline().rstrip())
arr=[0] * 10001
for i in range(N):
temp=int(sys.stdin.readline().rstrip())
arr[temp]+=1
for i in range(10001):
if(arr[i]!=0):
for j in range(arr[i]):
print(i)

21
백준/9465.py Normal file
View File

@@ -0,0 +1,21 @@
import sys
import math
input = sys.stdin.readline
T = int(input().strip()) # 테스트 케이스 개수
for i in range(T):
arr = [] # 스티커 가중치
total = 0
n = int(input().strip()) # 가로 행의 크기
arr.append(list(map(int,input().split())))
arr.append(list(map(int,input().split())))
dp = [[0]*3 for i in range(n)]
dp[0][0] = 0
dp[0][1] = arr[0][0]
dp[0][2] = arr[1][0]
for i in range(1, n):
dp[i][0] = max(dp[i-1][0], dp[i-1][1], dp[i-1][2])
dp[i][1] = max(dp[i-1][0], dp[i-1][2]) + arr[0][i]
dp[i][2] = max(dp[i-1][0], dp[i-1][1]) + arr[1][i]
print(max(dp[n-1][0], dp[n-1][1], dp[n-1][2]))

37
백준/9663.py Normal file
View File

@@ -0,0 +1,37 @@
import sys
input = sys.stdin.readline
n = int(input().strip())
colUsed = [False] * (n)
diagUsed = [False] * ((2*n)-1)
AntidiagUsed = [False] * ((2*n)-1)
tot = 0
def placeQueens(row):
global tot
if (row == n):
tot+=1
return
for col in range(n):
diagIndex = row - col + n - 1
AntiDiagIndex = row + col
if not colUsed[col] and not diagUsed[diagIndex] and not AntidiagUsed[AntiDiagIndex]:
colUsed[col] = True
diagUsed[diagIndex] = True
AntidiagUsed[AntiDiagIndex] = True
placeQueens(row + 1)
colUsed[col] = False
diagUsed[diagIndex] = False
AntidiagUsed[AntiDiagIndex] = False
placeQueens(0)
print(tot)