Upload files to "백준"

This commit is contained in:
2026-04-11 11:55:59 +09:00
parent 74f2368092
commit 1ff6439502
5 changed files with 145 additions and 0 deletions

38
백준/3029.py Normal file
View File

@@ -0,0 +1,38 @@
a=input()
b=input()
ahour=int(a[0:2])
bhour=int(b[0:2])
amin=int(a[3:5])
bmin=int(b[3:5])
asec=int(a[6:8])
bsec=int(b[6:8])
if(bsec<asec):
bsec+=60
amin+=1
sec = bsec - asec
if(bmin<amin):
bmin+=60
ahour+=1
min = bmin - amin
hour = bhour - ahour
if(hour<0):
hour+=24
if(hour == 0 and min == 0 and sec == 0):
hour=24
sec = '{0:02d}'.format(sec)
min = '{0:02d}'.format(min)
hour = '{0:02d}'.format(hour)
print(hour+ ":" + min + ":" + sec)

26
백준/3663.py Normal file
View File

@@ -0,0 +1,26 @@
import sys
sys.setrecursionlimit(10**6)
def controller(name):
def vertical(char):
diff = ord(char) - ord('A')
return min(diff, 26 - diff)
total_vertical = sum(vertical(i) for i in name)
min_move=1001
len_name=len(name)
min_horizon=len_name- 1
for i in range(len_name):
cumu = i + 1
while cumu < len_name and name[cumu] == 'A':
cumu +=1
move = min (2*(len_name-cumu)+i, min_horizon, 2*i+(len_name-cumu))
min_move = min(min_move , move)
return min_move + total_vertical
N = int(input())
for _ in range(N):
temp = input().rstrip()
print(controller(temp))

13
백준/4796.py Normal file
View File

@@ -0,0 +1,13 @@
case_num = 1
while True:
L, P, V = map(int, input().split())
if (L==0 and P==0 and V==0):
break
tot = 0
week = V//P
remainder = V % P
result = week * L + min(remainder, L)
print(f"Case {case_num}: {result}")
case_num += 1

24
백준/9251.py Normal file
View File

@@ -0,0 +1,24 @@
import sys
input = sys.stdin.readline
N = list(map(str, input().strip()))
M = list(map(str, input().strip()))
len_N = len(N)
len_M = len(M)
arr = [[0 for i in range(len_N+1)] for j in range(len_M+1)]
tot = 0
i=0
j=0
for j in range(1, len_M+1):
for i in range(1, len_N+1):
if(N[i-1] == M[j-1]):
arr[j][i] = arr[j-1][i-1] + 1
else:
arr[j][i] = max(arr[j][i-1], arr[j-1][i])
print(arr[len_M][len_N])

44
백준/9252.py Normal file
View File

@@ -0,0 +1,44 @@
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)
A = list(map(str, input().rstrip()))
B = list(map(str, input().rstrip()))
len_A = len(A)
len_B = len(B)
arr = [[0 for i in range(len_B+1)] for j in range(len_A+1)]
for i in range(1, len_A+1):
for j in range(1, len_B+1):
if(A[i-1] == B[j-1]):
arr[i][j] = arr[i-1][j-1] + 1
else:
arr[i][j] = max(arr[i-1][j], arr[i][j-1])
print(arr[len_A][len_B])
#LCS 구현 방법
result = []
def getText(r, c):
if r==0 or c==0:
return
if A[r-1] == B[c-1]:
result.append(A[r-1])
getText(r-1, c-1)
else:
if arr[r-1][c] > arr[r][c-1]:
getText(r-1,c)
else:
getText(r, c-1)
getText(len_A, len_B)
result_reverse = []
for i in range(len(result)):
result_reverse.append(result.pop())
print(('').join(result_reverse))