algorithm

TIL230323 주사위 세개

베스트오버 2023. 3. 23. 19:27

https://www.acmicpc.net/problem/2480

 

2480번: 주사위 세개

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

www.acmicpc.net

첫 시도일 때 복합적으로 만들어 버렸다..ㅠ

a, b, c = map(int, input().split())

d = [a, b, c]
sum = 0

if a == b == c:
    sum = 10000 + a * 1000
elif a == b or b == c or a == c:
    if a == b:
        sum = 1000 + a * 100
    elif b == c:
        sum = 1000 + b * 100
    else:
        sum = 1000 + a * 100
else:
    d.sort()			# 오른차순으로 정렬
    # d.sort(reverse=True) 	# 내림차순으로 정렬
    sum = d[-1] * 100		# 정렬 된 것 중 제일 뒤 숫자 꺼내기

print(sum)

 

리스트와 중복을 허용하지 않는 집합을 잘 활용해서 만들었다.

 

dice = list(map(int, input().split()))
dice_set = set(dice)

if len(dice_set) == 1:		# 길이를 알아내는 len()
    prize = 10000 + dice[0] * 1000
elif len(dice_set) == 2:
    for d in dice_set:
        if dice.count(d) == 2:	# d의 갯수를 알아내는 count()
            prize = 1000 + d * 100
            break
elif len(dice_set) == 3:
    prize = max(dice) * 100

print(prize)

 

리스트 자료형의 인덱싱을 활용해서 만들어 보았다.

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

if dice[0] == dice[1] == dice[2]:
    prize = 10000 + dice[0] * 1000
elif dice[0] == dice[1] or dice[1] == dice[2] or dice[0] == dice[2]:
    if dice[0] == dice[1]:
        prize = 1000 + dice[0] * 100
    elif dice[1] == dice[2]:
        prize = 1000 + dice[1] * 100
    else:
        prize = 1000 + dice[0] * 100
else:
    prize = max(dice) * 100

print(prize)