안녕하세요, 성조입니다.
이번 문제는 Python 3 버전으로 풀이됐습니다.
처음에 코드를 잘못 날려서 1 / 1 / 1으로 3번이나 코드를 바꾼 문제네요..
간단하게 생각하고 정리하면 좋을 것 같습니다.
문제 출처
https://www.acmicpc.net/problem/2476
문제
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.
1) 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.
2) 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
3) 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.
예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3×100으로 계산되어 1,300원을 받게 된다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2×1,000 으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그 중 가장 큰 값이 6이므로 6×100으로 계산되어 600원을 상금으로 받게 된다.
N(2 ≤ N ≤ 1,000)명이 주사위 게임에 참여하였을 때, 가장 많은 상금을 받은 사람의 상금을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 참여하는 사람 수 N이 주어지고 그 다음 줄부터 N개의 줄에 사람들이 주사위를 던진 3개의 눈이 빈칸을 사이에 두고 각각 주어진다.
출력
첫째 줄에 가장 많은 상금을 받은 사람의 상금을 출력한다.
코드
import sys
num = int(input())
req = 0
res = 0
for _ in range(num):
aData, bData, cData = map(int,sys.stdin.readline().split())
if aData == bData == cData:
res = max(res, 10000 + (aData*1000))
elif aData == bData:
res = max(res, 1000 + aData * 100)
elif aData == cData:
res = max(res, 1000 + aData * 100)
elif bData == cData:
res = max(res, 1000 + bData * 100)
else:
req = max(aData,bData,cData)
res = max(res, req*100)
print(res)
풀이
1) 3가지 조건이 맞는 경우 어차피 같은 조건이므로 그 값을 곱해준다.
2) 두 개씩 맞는 경우 a와 b, a와 c, b와 c를 각각 확인할 경우에 있는 것 중 같은 값을 곱 연산한다.
3) 만약 값이 없는 경우 가장 큰 주사위의 눈을 가지고 값을 구한다.
본인의 경우 모든 숫자가 다른 경우. max 함수를 활용하여 가장 큰 값을 구했다.
이후 조건에 맞춰진 값을 출력하면 경우의 수를 모두 만족하는 값을 출력하므로 문제를 해결할 수 있다.
오타나 이해가 안 가는 부분이 있다면 언제든지 댓글로 얘기해 주시면 감사드리겠습니다.
다음 포스팅 때 뵙겠습니다.
'백준 - Python' 카테고리의 다른 글
[백준 - 1463][Python] 1로 만들기 (0) | 2023.01.26 |
---|---|
[백준 - 2822][Python] 점수 계산 (0) | 2023.01.25 |
[백준 - 1920][Java] 수 찾기 (0) | 2023.01.19 |
[백준 - 10989][Python] 수 정렬하기 3 (0) | 2023.01.17 |
[백준 - 9506][Python] 약수들의 합 (0) | 2023.01.16 |