알고리즘/백준

[Python] 백준 2480번 - 주사위 세 개

번잔중 2022. 3. 26. 19:39
 

2480번: 주사위 세개

1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.  같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.  같은 눈이 2개

www.acmicpc.net

문제

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원을 상금으로 받게 된다.

 

3개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오.

 

입력

첫째 줄에 3개의 눈이 빈칸을 사이에 두고 각각 주어진다. 

 

출력

첫째 줄에 게임의 상금을 출력 한다.

 

dice = list(map(int, input().split()))
dice.sort()

if dice.count(dice[1]) == 1:
    print(max(dice) * 100)
elif dice.count(dice[1]) == 2:
    print(1000 + dice[1] * 100)
else:
    print(10000 + dice[1] * 1000)

주사위 세 개를 던진다고 하여 순서와는 상관 없이 개수가 중요하다고 생각했습니다. 그래서 오름차순으로 정렬한 후 가운데 값이 list에서 몇 번 반복되는지 여부에 따라 같은 눈의 개수를 판단했습니다.

 

예를 들어 3 6 3의 경우, sort() 함수를 사용하면 3 3 6으로 정렬됩니다. 이 때, 가운데에 있는 값인 3의 개수를 구하면 같은 눈이 2개임을 확인할 수 있습니다.

 

많이 미흡합니다. 더 좋은 방법이 있으시다면 댓글로 알려주시면 감사하겠습니다.(^_^)

태클은 언제나 환영하겠습니다.