맛있는물회

[맛있는물회] <백준 알고리즘> 15953번 "상금 헌터" 본문

IT/알고리즘

[맛있는물회] <백준 알고리즘> 15953번 "상금 헌터"

맛있는물회 2020. 4. 5. 14:41

친구들과 코딩 테스트 기출 문제를 풀면서 스터디를 하기로 했다.

처음 선정된 문제! 카카오 코딩 페스티벌 예선 문제이다. 

https://www.acmicpc.net/problem/15953

문제 조건


제이지는 자신이 코드 페스티벌에 출전하여 받을 수 있을 상금이 얼마인지 궁금해졌다. 그는 자신이 두 번의 코드 페스티벌 본선 대회에서 얻을 수 있을 총 상금이 얼마인지 알아보기 위해, 상상력을 발휘하여 아래와 같은 가정을 하였다.

  • 제1회 코드 페스티벌 본선에 진출하여 a등(1 ≤ a ≤ 100)등을 하였다. 단, 진출하지 못했다면 a = 0으로 둔다.

  • 제2회 코드 페스티벌 본선에 진출하여 b등(1 ≤ b ≤ 64)등을 할 것이다. 단, 진출하지 못했다면 b = 0으로 둔다.

제이지는 이러한 가정에 따라, 자신이 받을 수 있는 총 상금이 얼마인지를 알고 싶어한다.

Input


첫 번째 줄에 제이지가 상상력을 발휘하여 가정한 횟수 T(1 ≤ T ≤ 1,000)가 주어진다.

다음 T개 줄에는 한 줄에 하나씩 제이지가 해본 가정에 대한 정보가 주어진다. 각 줄에는 두 개의 음이 아닌 정수 a(0 ≤ a ≤ 100)와 b(0 ≤ b ≤ 64)가 공백 하나를 사이로 두고 주어진다.

 

Output


각 가정이 성립할 때 제이지가 받을 상금을 원 단위의 정수로 한 줄에 하나씩 출력한다. 입력이 들어오는 순서대로 출력해야 한다.

 

생각한 아이디어


카카오 코딩 페스티벌 기출 문제라길래 쫄았는데 문제를 읽어보니 생각보다 간단해서 이렇게 푸는게 맞나라는 생각이 들었다. 

아주 단순하게 처음에 주어진 값을 토대로 if 문으로 return 값을 제어하고 출력했다.

한 가지 집중해야하는 부분은 본선을 진출하더라도 상금을 받는 순위에 들지 못하면 상금은 없다는 부분을 생각해야한다. 

그래서 첫 if 문에서 0 이거나 순위 밖이면 상금을 못받게 return 하였다.

소스코드


import sys

def A_money(a):
    if a==0 or a>21: return 0
    elif a==1: return 5000000
    elif a>1 and a<=3: return 3000000
    elif a>3 and a<=6: return 2000000
    elif a>6 and a<=10: return 500000
    elif a>10 and a<=15: return 300000
    elif a>15 and a<=21: return 100000

def B_money(b):
    if b == 0 or b>31: return 0
    elif b==1: return 5120000
    elif b>1 and b<=3: return 2560000
    elif b>3 and b<=7: return 1280000
    elif b>7 and b<=15: return 640000
    elif b>15 and b<=31: return 320000

T = int(input())
for TC in range(T):
    a, b = map(int, input().split())
    sum = A_money(a) + B_money(b)
    print(sum)

 

*파이썬 문법 정리

Comments