[백준/파이썬] 13416번 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 13416번 문제
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
환규는 오늘부터 주식 투자를 하려고 한다. 열심히 정보를 수집한 결과 A사, B사, C사에 투자하기로 했다. 환규는 오늘 산 주식이 내일 오를지, 떨어질지 예측하는 것이 아직은 힘들다. 그래서 다음과 같이 투자를 하기로 했다. 먼저 서로 다른 날에는 서로 다른 회사의 주식을 살 수 있지만, 하루에는 최대 1개 회사의 주식만 사도록 한다. 매일 장이 열리기 전에 A사, B사, C사 중 그날 주식을 살 회사를 하나 정한 후, 장이 열릴 때 정한 회사의 주식을 산다. 그 다음 장이 닫힐 때 그날 산 주식을 모두 판다. 만약 세 회사 중 어느 곳도 수익이 날 것 같지 않으면 주식을 구매하지 않아도 된다.
환규는 주식을 처음 해보기 때문에 과연 주식으로 돈을 벌 수 있을지 궁금해졌다. 그래서 투자하려는 회사들의 지난 N일 동안의 주식 데이터를 이용해 N일 동안 위 규칙을 지키며 주식투자를 했을 때 과연 얼마를 벌 수 있는지 계산해 보기로 했다. 먼저 A사, B사, C사의 N일 동안의 주가 데이터를 모았다. …
입력 요약
입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에는 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 환규가 정리한 주식 데이터의 일수를 나타내는 자연수 N(1 ≤ N ≤ 1,000)이 주어진다. 다음 N개의 줄에 각 회사별 주식을 구매했을 때, 그날 그날의 손익을 나타내는 3개의 정수 A, B, C (-1,000,000 ≤ A, B, C ≤1,000,000)가 주어진다. …
출력 요약
출력은 표준 출력을 사용한다. 입력받은 데이터에 대해, 환규가 N일 동안 규칙을 지키며 최적의 투자를 했을 경우 얻을 수 있었을 최대 이익을 한 줄에 1개씩 출력한다.
코드
import sys;read=sys.stdin.readline
for T in range(int(read())):
n=int(read())
l=[max(list(map(int,read().split()))+[0]) for i in range(n)]
print(sum(l))
설명
핵심은 구현 관점에서 환규는 오늘부터 주식 투자를 하려고 한다. 열심히 정보를 수집한 결과 A사, B사, C사에 투자하기로 했다. 환규는 오늘 산 주식이 내일 오를지, 떨어질지 예측하는 것이 아직은 힘들다. 그래서 다음과 같이 투자를 하기로 했다. …를 만족하도록 로직을 구성하는 것입니다.
코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.
경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.
댓글남기기