728x90
문제 링크
코드 작성 순서
- 2017 카카오 등수에 따른 상금 list 추가하기
- 2018 카카오 등수에 따른 상금 list 추가하기
- 상상력을 발휘해 가정할 횟수 T 입력문 생성, T회만큼 반복하는 반복문 생성
- 2017, 2018 카카오 페스티벌에서 달성한 등수를 입력받을 a, b선언
- 상금 등수 이탈 시 a or b의 값을 0으로 바꿔주는 조건문 작성
- 받을 상금 원 단위로 출력
Process 1 > 2017 카카오 등수에 따른 상금 list 추가하기
- 순위권 외로 정해졌을 때 a, b가 0이 되어야 한다(문제 참고)
- index = 0 >> 0등과 같고, list의 0번째 값이 출력되어야 한다
- 따라서 list의 0번째 값은 0을 넣는다
- 그 후 등 수별 상금 수령이 정해진 인원 N명을
- 각각 N번씩 반복하여 추가한다 (직접 list안에 모든 수를 입력해도 상관없다)
K_2017 = [0, 500]
for i in range(2):
K_2017.append(300)
for i in range(3):
K_2017.append(200)
for i in range(4):
K_2017.append(50)
for i in range(5):
K_2017.append(30)
for i in range(6):
K_2017.append(10)
Process 2 > 2018 카카오 등수에 따른 상금 list 추가하기
- Process 1과 동일
- 변수 이름만 2018에 맞게 바꾸어준다
K_2018 = [0, 512]
for i in range(2):
K_2018.append(256)
for i in range(4):
K_2018.append(128)
for i in range(8):
K_2018.append(64)
for i in range(16):
K_2018.append(32)
Process 3 > 상상력을 발휘해 가정할 횟수 T 입력문 생성, T회만큼 반복하는 반복문 생성
- i in range(T) = T회 반복으로 이해하면 편하다
T = int(input())
for i in range(T):
Process 4 > 2017, 2018 카카오 페스티벌에서 달성한 등수를 입력받을 a, b선언
- Process 3의 for문 내부에 작성
- 등수는 정수형이므로 int로 입력
- a, b를 공백을 기준으로 입력받아야 하므로 위의 조건과 결합해 코드 작성
- 다중 입력 + 자료형 선언의 경우 map()을 이용하여 입력받는다
a, b = map(int, input().split())
Process 5 > 상금 등수 이탈 시 a or b의 값을 0으로 바꿔주는 조건문 작성
- Process 3의 for문 내부에 작성
- 2017년의 경우에는 21명이, 2018년에는 31명의 참가자가 상금을 받을 수 있었기에 참고하여 조건문 작성
if a > 21:
a = 0
if b > 31:
b = 0
Process 6 > 받을 상금 원 단위로 출력
- Process 3의 for문 내부에 작성
- 2017년에는 a등, 2018년에는 b 등을 했기에 이미 만들어 둔 list에 등수 입력하기
- 등수에서 벗어날 시 0등으로 처리된다
- 원 단위로 출력해야하기에 만(10000)을 곱해서 출력한다
rew = (K_2017[a] + K_2018[b])*10000
# 결과 출력
print(rew)
Process 0 > Result Code
# 2017년 코드 페스티벌 등수에 따른 상금
# 순위권 외적인 부분을 표현하기 위해 리스트의 0번째 부분은
# 상금을 0으로 두었다
K_2017 = [0, 500]
for i in range(2):
K_2017.append(300)
for i in range(3):
K_2017.append(200)
for i in range(4):
K_2017.append(50)
for i in range(5):
K_2017.append(30)
for i in range(6):
K_2017.append(10)
# 2017년 코드 페스티벌 등수에 따른 상금
# 마찬가지로 리스트의 0번째 부분은
# 상금을 0으로 두었다
K_2018 = [0, 512]
for i in range(2):
K_2018.append(256)
for i in range(4):
K_2018.append(128)
for i in range(8):
K_2018.append(64)
for i in range(16):
K_2018.append(32)
# 가정한 횟수 T
T = int(input())
# T회동안의 로직
for i in range(T):
# 1회차 등수, 2회차 등수 입력
a, b = map(int, input().split())
# 순위권 밖일 경우 상금을 0으로 두는 작업 진행
if a > 21:
a = 0
if b > 31:
b = 0
# 리스트의 0번째 값이 0이므로 a, b는 그대로 들어가면된다
rew = (K_2017[a] + K_2018[b])*10000
# 결과 출력
print(rew)
주의할 점
- a, b의 값이 정해진 리스트의 인덱스에서 벗어나도록 하지 않도록 한다
- list의 index가 30개인데 변수에 32, 31, 200 이런 수가 들어갈 경우 오답으로 처리되니 주의하자
728x90
'Coding Test > BaekJoon_Python' 카테고리의 다른 글
BaekJoon - 10809번: 알파벳 찾기 (문자열, PYTHON) (0) | 2022.11.01 |
---|---|
BaekJoon - 2747번: 피보나치 수 (수학/구현, PYTHON) (0) | 2022.10.12 |
BaekJoon - 1237번: 정ㅋ벅ㅋ(1 차원 생각, PYTHON) (0) | 2022.10.06 |
BaekJoon - 15596번: 정수 N개의 합(함수, PYTHON) (0) | 2022.09.05 |
BaekJoon - 4344번: 평균은 넘겠지(1차원 배열, PYTHON) (0) | 2022.09.04 |