최용우
백준[1488] 숌트링 파이썬 본문
문자열 문제 같지만 사실은 수학 문제.
a, b, c, d
4개의 음이 아닌 정수가 주어진다.
1) a, b, c, d 중 하나라도 0인 경우
2) a, b, c, d 모두 1 이상의 값일 때
두번째 경우 작은 수들 사이를 경계로 만들어 줄 수 있다.
예를 들어 b = 3 이면 아래 파란색 타원과 같이 a가 들어갈 자리는 b + 1 = 4 이 된다.
b + 1 개 자리에서 a의 짝들이 최대 몇개까지 들어갈 수 있는지 계산 해주면 된다. (maxA, maxB가 모두 1이상임을 보장하므로)
만약 a == b 라면 a의 짝들은 타원 3개를 차지하므로 b * 2
a == b + 1 이라면 a + b
a > b + 1 이라면 min(maxA * (b + 1), a) + b
끝.
import sys
input = sys.stdin.readline
a, b, c, d = map(int, input().split())
#무조건 a가 큰 수로 만든다.
if a < b:
a, b = b, a
c, d = d, c
#a,b,c,d 중 0이 하나라도 있는 경우
if a == 0 or c == 0:
print(min(b, d))
elif b == 0 or d == 0:
print(min(a, c))
#그렇지 않은 경우
else:
semi = b + 1
if a < semi:
print(b * 2)
elif a == semi:
print(b + a)
else:
print(min(semi * c, a) + b)
'알고리즘' 카테고리의 다른 글
백준[1721] 상자퍼즐(파이썬) (1) | 2023.03.01 |
---|---|
백준[1749] 점수따먹기(파이썬) (0) | 2023.03.01 |
백준[1570] 오세준 (0) | 2023.02.26 |
다익스트라 vs 플로이드 와샬 vs 벨만포드 (1) | 2022.12.17 |
퀵(Quick) 정렬 (0) | 2022.07.31 |