-
section2.9 주사위 게임알고리즘 2022. 10. 25. 17:57
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 명이 주사위 게임에 참여하였을 때, 가장 많은 상금을 받은 사람의 상금을 출력하는 프로그램을 작성하시오.
import sys sys.stdin = open("input.txt", "rt") n = int(input()) maxPrice = -1 for i in range(n): tmp = input().split() price = -1 if (len(set(tmp))==1): price = 10000 + int(tmp[0])*1000 elif (len(set(tmp))==2): if (tmp[0]==tmp[1]): price = 1000 + int(tmp[0])*100 elif (tmp[1]==tmp[2]): price = 1000 + int(tmp[1])*100 else: price = 1000 + int(tmp[2])*100 else: tmp.sort(reverse=True) price = int(tmp[0])*100 if maxPrice<price: maxPrice = price print(maxPrice)
경우의 수만 잘 나누면 되는 문제라 어렵지 않았다.
import sys sys.stdin = open("input.txt", "rt") n = int(input()) res = 0 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 + 100*a elif (b==c): money = 1000 + 100*b else: money = c*100 if money > res: res = money print(res)
map에 대해 조금 더 알아봐야겠다
list의 원소가 str일 때 map 함수를 이용하면 저렇게 쉽게 int로 변환되는지 몰랐다
map(function, iterable)
첫 번째 매개변수 = 함수
두 번째 매개변수 = 반복 가능한 자료형 (리스트, 튜플 등)
> 자동적으로 리스트를 함수에 적용해서 map 객체를 반환한다
map(람다함수, 리스트) 또한 가능하다
간단하고 일회성이면 def를 따로 만들기보다는 map+lambda 이용
mapLambda = list(map(lambda x:x+1, [5, 4, 3, 2, 1])) print(mapLamda) # [6, 5, 4, 3, 2]
728x90'알고리즘' 카테고리의 다른 글
section3.1 회문 문자열 검사 (1) 2022.10.25 section2.10 점수 계산 (1) 2022.10.25 section2.8 뒤집은 소수 (1) 2022.10.24 section2.7 소수(에라토스테네스 체) (0) 2022.10.24 section2.6 자릿수의 합 (0) 2022.10.22