Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- go
- KAKAO
- docker
- Singleton Pattern
- GCP
- cpu scheduling
- BubbleSort
- 파이썬
- k8s
- golang
- LeetCode
- 백준
- easy
- Codility
- kubernetes
- Top-down
- mobaXTerm
- Backjoon
- GKE
- Observer Pattern
- 알고리즘
- Kotlin
- java
- Dynamic Programming
- 피보나치
- github
- Python
- Programmers
- 그리디
Archives
- Today
- Total
To Be Developer
[BackJoon] 15953번 : 상금 헌터 (Python) 본문
https://www.acmicpc.net/problem/15953
[Python 풀이]
class KakaoCode(object):
# 경우의 수에 따른 상금을 저장해 놓은 stack 변수
stack = []
def __init__(self):
# 대회 1의 상금 정보와 인원 수
self.test1 = [
{'rank' : 1, 'prize': 500, 'amount':1},
{'rank' : 2, 'prize': 300, 'amount':2},
{'rank' : 3, 'prize': 200, 'amount':3},
{'rank' : 4, 'prize': 50, 'amount':4},
{'rank' : 5, 'prize': 30, 'amount':5},
{'rank' : 6, 'prize': 10, 'amount':6}
]
# 대회 2의 상금 정보와 인원 수
self.test2 = [
{'rank' : 1, 'prize': 512, 'amount':1},
{'rank' : 2, 'prize': 256, 'amount':2},
{'rank' : 3, 'prize': 128, 'amount':4},
{'rank' : 4, 'prize': 64, 'amount':8},
{'rank' : 5, 'prize': 32, 'amount':16}
]
# 획득 할 수 있는 상금을 저장
def printPrizes(self, data):
# 빈 칸을 기준으로 1차 2차 등수를 매김
data = list(map(int, data.split(' ')))
# 대회1의 순위
rankTest1 = 0
# 대회2의 순위
rankTest2 = 0
# 총 상금 정보
prize = 0
# 예외 체크 : 등수가 0이 아니라면 정상적인 상금
if data[0] != 0:
# 대회 1의 상금 인원을 체크하기 위한 반복문
for i in self.test1:
# 인원을 더한다.
rankTest1+=i['amount']
# 자신의 등수가 랭크에 속하면 총상금에 prize를 더한다.
if rankTest1>=data[0]:
prize+=i['prize']
break
# 순위에 들지 못하면 상금은 0을 더한다.
else:
prize+=0
# 등수가 0이라면 상금이 없다. -> testcase 참 이상하게 .... 0등이 어딨어...
else:
prize+=0
# 대회 2의 case.. 대회 1의 경우와 같은 방식으로 check한다.
if data[1] != 0:
for i in self.test2:
rankTest2+=i['amount']
if rankTest2>=data[1]:
prize+=i['prize']
break
else:
prize+=0
else:
prize+=0
# stack 에 상금 정보를 추가
self.stack.append(prize*10000)
if __name__=="__main__":
# 경우의 수
N = int(input())
kakao = KakaoCode()
for i in range(N):
kakao.printPrizes(input())
for i in kakao.stack:
print(i)
'알고리즘 > BackJoon' 카테고리의 다른 글
[BackJoon] 2193번 : 이친수 (Python) (0) | 2019.04.23 |
---|---|
[BackJoon : 백준] 1003번 : 피보나치 함수 (Python) (0) | 2019.04.20 |
[BackJoon : 백준] 10825번 : 국영수 (Python) (0) | 2019.04.17 |
[BackJoon : 백준] 1037번 : 약수 (Python) (0) | 2019.04.16 |
[BackJoon : 백준] 2579번 : 계단오르기 (Python) (0) | 2019.04.14 |