Coding Test/BaekJoon_Python

BaekJoon - 15953번: 상금 헌터 (카카오 코드 페스티벌, PYTHON)

  • -
728x90

문제 링크

 

15953번: 상금 헌터

첫 번째 줄에 제이지가 상상력을 발휘하여 가정한 횟수 T(1 ≤ T ≤ 1,000)가 주어진다. 다음 T개 줄에는 한 줄에 하나씩 제이지가 해본 가정에 대한 정보가 주어진다. 각 줄에는 두 개의 음이 아닌

www.acmicpc.net


코드 작성 순서

  1. 2017 카카오 등수에 따른 상금 list 추가하기
  2. 2018 카카오 등수에 따른 상금 list 추가하기
  3. 상상력을 발휘해 가정할 횟수 T 입력문 생성, T회만큼 반복하는 반복문 생성
  4. 2017, 2018 카카오 페스티벌에서 달성한 등수를 입력받을 a, b선언
  5. 상금 등수 이탈 시 a or b의 값을 0으로 바꿔주는 조건문 작성
  6. 받을 상금 원 단위로 출력

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
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.