[백준/파이썬] 12790번 풀이

업데이트:



문제 정보


풀이

문제

넥슨지티에서는 최근 SRPG “슈퍼 판타지 워”의 후속작으로 “미니 판타지 워”를 출시하였다. 전편과 마찬가지로, 미니 판타지 워에서도 각 캐릭터의 전투력을 계산하여야 한다. 각 캐릭터의 전투력은 단순히 각 캐릭터의 능력치의 가중 합으로 계산된다. 전투력 계산은 굉장히 간단한 로직이지만 게임 곳곳에 쓰이는 만큼, Being은 다른 프로그래머로 하여금 이 로직을 구현하여 자신의 것과 교차검증하고자 한다. 그리하여 당신은 이 전투력을 구현하는 작업을 맡게 되었다.

능력치는 모두 네 종류 존재한다. 이는 각각 HP, MP, 공격력, 방어력이다. 각 캐릭터는 기본 능력치 4종을 바탕으로 장비를 장착할 수 있다. 각 장비는 능력치를 변화시키는데, 그 변화되는 양이 입력으로 주어진다. 따라서 캐릭터의 최종 능력치는 기본 능력치와 장비 능력치의 합으로 구성된다. 단, HP와 MP는 1보다 작은 경우 1로 간주하며, 공격력은 0보다 작은 경우 0으로 간주한다. …

입력 요약
입력의 첫 줄에는 능력치를 계산하여야 하는 캐릭터의 수, 또는 테스트 케이스의 수 T (1 ≤ T ≤ 1000) 가 주어진다.

다음 T 행에 걸쳐 각각 8개의 정수가 주어진다. 처음 네 개의 정수는 각각 캐릭터의 기본 HP, MP, 공격력, 방어력이다. 이 값들은 1 이상 999 이하로 주어진다. 다음 네 개의 정수는 각각 캐릭터의 장비에 의해 증감되는 HP, MP, 공격력, 방어력이다. 이 값들은 -999 이상 999 이하로 주어진다.

출력 요약
각 캐릭터, 즉 각 테스트 케이스마다 한 줄에 하나씩 캐릭터의 최종 전투력을 출력한다.

코드

import sys

for _ in range(int(sys.stdin.readline())):
    status = list(map(int, sys.stdin.readline().split()))
    hp = status[0] + status[4]
    hp = hp if hp > 1 else 1
    mp = status[1] + status[5]
    mp = mp if mp > 1 else 1
    atk = status[2] + status[6]
    atk = atk if atk > 0 else 0
    grd = status[3] + status[7]

    combat = 1*hp + 5*mp + 2*atk + 2*grd
    print(combat)

설명

핵심은 구현 관점에서 넥슨지티에서는 최근 SRPG “슈퍼 판타지 워”의 후속작으로 “미니 판타지 워”를 출시하였다. 전편과 마찬가지로, 미니 판타지 워에서도 각 캐릭터의 전투력을 계산하여야 한다. 각 캐릭터의 전투력은 단순히 각 캐릭터의 능력치의 가중 합으로 계산된다. …를 만족하도록 로직을 구성하는 것입니다.

코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.

경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.



다음 읽을거리

관련 허브 페이지에서 같은 주제의 글을 이어서 확인할 수 있습니다.

댓글남기기