1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게 임이 있다.
규칙(1) 같은 눈이 3개가 나오면 10,000원+(같은 눈)1,000원의 상금을 받게 된다. 규칙(2) 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)100원의 상금을 받게 된다. 규칙(3) 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)100원의 상금을 받게 된다.
예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3100으로 계산되어 1,300원을 받게 된 다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+21,000 으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그 중 가장 큰 값이 6이므로 6100으로 계산되어 600원을 상금 으로 받게 된다.
N 명이 주사위 게임에 참여하였을 때, 가장 많은 상금을 받은 사람의 상금을 출력하는 프로그램 을 작성하시오
3
3 3 6
2 2 2
6 2 5
12000
[내 코드]
from collections import Counter
N=int(input())
def max_(x):
max=-2147000000
for prize in x:
if prize>max:
max=prize
return max
def is_count(x):
x=set(x)
if len(x)==1:
return 3
elif len(x)==2:
return 2
else:
return 1
def frequency(x):
counter=Counter(x)
most_common = counter.most_common(1)[0][0]
return most_common
def money(x):
if is_count(x)==3:
return 10000+frequency(x)*1000
elif is_count(x)==2:
return 1000+frequency(x)*100
elif is_count(x)==1:
return 100*frequency(x)
a=[]
for i in range(N):
res=list(map(int,input().split()))
a.append(money(res))
print(max_(a))
- 2차원 리스트로 받기
- 각 행별로 중복된 수 찾기
- 중복된 수의 중복횟수 구하기
- 2,3바탕으로 상금 계산하기
+Counter : collections 모듈의 Counter 클래스는 컨테이너안의 데이터를 편리하고 빠르게 개수를 세도록 지원한다.Counter 생성자에 문자열을 인자로 넘기면 각 문자가 문자열에서 몇 번씩 나타나는지를 알려주는 객체가 반환된다.
[해설코드]
n=int(input())
for i in range(n):
tmp=input().split()
tmp.sort()
a,b,c=map(int,tmp)
if a==b and b==c:
money=10000+a*1000
elif a==b or a==c:
money=1000+(a*100)
elif b==c:
money=1000+(b*100)
else:
money=c*100
if money>res:
res=money
print(res)