문제
2017년에 이어, 2018년에도 카카오 코드 페스티벌이 개최된다!
카카오 코드 페스티벌에서 빠질 수 없는 것은 바로 상금이다. 2017년에 개최된 제1회 코드 페스티벌에서는, 본선 진출자 100명 중 21명에게 아래와 같은 기준으로 상금을 부여하였다.
2018년에 개최될 제2회 코드 페스티벌에서는 상금의 규모가 확대되어, 본선 진출자 64명 중 31명에게 아래와 같은 기준으로 상금을 부여할 예정이다.
제이지는 자신이 코드 페스티벌에 출전하여 받을 수 있을 상금이 얼마인지 궁금해졌다. 그는 자신이 두 번의 코드 페스티벌 본선 대회에서 얻을 수 있을 총 상금이 얼마인지 알아보기 위해, 상상력을 발휘하여 아래와 같은 가정을 하였다.
제1회 코드 페스티벌 본선에 진출하여 a등(1 ≤ a ≤ 100)등을 하였다. 단, 진출하지 못했다면 a = 0으로 둔다.
제2회 코드 페스티벌 본선에 진출하여 b등(1 ≤ b ≤ 64)등을 할 것이다. 단, 진출하지 못했다면 b = 0으로 둔다.
제이지는 이러한 가정에 따라, 자신이 받을 수 있는 총 상금이 얼마인지를 알고 싶어한다.
https://www.acmicpc.net/problem/15953
입력
첫 번째 줄에 제이지가 상상력을 발휘하여 가정한 횟수 T(1 ≤ T ≤ 1,000)가 주어진다.
다음 T개 줄에는 한 줄에 하나씩 제이지가 해본 가정에 대한 정보가 주어진다.
각 줄에는 두 개의 음이 아닌 정수 a(0 ≤ a ≤ 100)와 b(0 ≤ b ≤ 64)가 공백 하나를 사이로 두고 주어진다.
출력
각 가정이 성립할 때 제이지가 받을 상금을 원 단위의 정수로 한 줄에 하나씩 출력한다. 입력이 들어오는 순서대로 출력해야 한다.
예제
# input
6
8 4
13 19
8 10
18 18
8 25
13 16
# output
1780000
620000
1140000
420000
820000
620000
문제 풀이
import sys
input = sys.stdin.readline
T = int(input())
for _ in range(T):
prize = 0
a, b = map(int, input().split())
if a == 0:
pass
elif a == 1:
prize += 5000000
elif a <= 3:
prize += 3000000
elif a <= 6:
prize += 2000000
elif a <= 10:
prize += 500000
elif a <= 15:
prize += 300000
elif a <= 21:
prize += 100000
else:
pass
if b == 0:
pass
elif b == 1:
prize += 5120000
elif b <= 3:
prize += 2560000
elif b <= 7:
prize += 1280000
elif b <= 15:
prize += 640000
elif b <= 31:
prize += 320000
else:
pass
print(prize)
import sys
input = sys.stdin.readline
prizes_2017 = [0, 5000000, 3000000, 2000000, 500000, 300000, 100000]
limits_2017 = [0, 1, 3, 6, 10, 15, 21]
prizes_2018 = [0, 5120000, 2560000, 1280000, 640000, 320000]
limits_2018 = [0, 1, 3, 7, 15, 31]
T = int(input())
for _ in range(T):
prize = 0
a, b = map(int, input().split())
for i in range(len(limits_2017)):
if a <= limits_2017[i]:
prize += prizes_2017[i]
break
for i in range(len(limits_2018)):
if b <= limits_2018[i]:
prize += prizes_2018[i]
break
print(prize)
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.