본문 바로가기

Algorithm/Inflearn

[Python/알고리즘] 인프런 주사위게임

문제출처

  1. 규칙(1) 같은 눈이 3개가 나오면 10,000원+(같은 눈)*1,000원의 상금을 받게 된다. 
  2. 규칙(2) 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)*100원의 상금을 받게 된다. 
  3. 규칙(3) 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)*100원의 상금을 받게 된다. 
  4. N 명이 주사위 게임에 참여하였을 때, 가장 많은 상금을 받은 사람의 상금을 출력하는 프로그램 을 작성하시오

풀이코드

import sys

N = int(input())

# 상금 초기화
res =0
for i in range(N):
    tmp = input().split()
    #가장 큰 숫자 찾기
    tmp.sort()
    a,b,c = map(int, tmp)
    # 같은 눈이 3개
    if a == b and b==c:
        money = 10000+a*1000
    # 같은 눈이 2개 / 정렬을 했기 때문에 a보다 작을 수가 없음
    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)

코드설명

  1. 참여하는 사람수의 입력값 대입
  2. N의 수 만큼 각각의 원소가 split 돼서 tmp 임시변수에 저장
  3. sort로 정렬후 a,b,c에 각각 대입한 다음 원소 비교
  4. 가장 많은 상금을 받은 사람의 상금을 출력해야하기 때문에 res로 초기화했던 변수와 비교후 print

기타사항

n=int(input())
# 빈 리스트
tot=[]
for i in range(n):
    tmp=list(map(int,input().split()))
    tmp.sort()
    a, b, c = tmp
    if a==b==c:
        tot.append(10000+a*1000)
    elif a==b or a==c:
        tot.append(1000+a*100)
    elif b==c:
        tot.append(1000+b*100)
    else:
        tot.append(c*100)
# max로 가장 높은 금액 출력
print(max(tot))
반응형