1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.
N(2 ≤ N ≤ 1,000)명이 주사위 게임에 참여하였을 때, 가장 많은 상금을 받은 사람의 상금을 출력하는 프로그램을 작성하시오.
첫째 줄에는 참여하는 사람 수 N이 주어지고 그 다음 줄부터 N개의 줄에 사람들이 주사위를 던진 3개의 눈이 빈칸을 사이에 두고 각각 주어진다.
첫째 줄에 가장 많은 상금을 받은 사람의 상금을 출력한다.
3
3 3 6
2 2 2
6 2 5
12000
참여하는 사람의 수 n번을 위해
n = int(input())을 해주었다.
각 상금마다 비교를 해주어야 하기 때문에 list를 사용하여
prize = []으로 상금들을 받을 리스트를 초기화해주었다.
그 후 for문을 n번 반복하여 a,b,c를 받고, 각 주사위마다 상금을 계산해준 후 리스트에 append를 하여 max를 사용하여 제일 큰 값을 출력해주었다.
백준 2476번
n = int(input()) prize = [] for i in range(n): a,b,c = map(int, input().split()) if a == b == c: prize.append(10000+a*1000) elif a == b : prize.append(1000+a*100) elif a == c: prize.append(1000+a*100) elif b == c: prize.append(1000+b*100) else: prize.append(max(a,b,c)*100) # print(prize) print(max(prize))
그 외 다른 풀이 (counter 모듈 사용)
from collections import Counter n = int(input()) prize = [] for i in range(n): dice = list(map(int, input().split())) cnt = Counter(dice) if 3 in cnt.values(): prize.append(10000+1000*dice[0]) elif 2 in cnt.values(): for i in cnt.keys(): if cnt[i] == 2: prize.append(1000+100*i) else: prize.append(max(dice)*100) print(prize) print(max(prize))