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)