관리 메뉴

솜씨좋은장씨

[BaekJoon] 2480번 : 주사위 세개 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 2480번 : 주사위 세개 (Python)

솜씨좋은장씨 2022. 1. 12. 01:12
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 주사위 세개 입니다.

 

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개가 나오는 경우는

if len(set(dice_numbers)) == 1:
    price = 10000 + dice_numbers[0] * 1000

 

 

주어진 눈의 값을 set으로 만들었을 때 중복이 제거가 되고 1개로 바뀐 경우를 이 경우로 쳤습니다.

모두 같은 값이므로 입력받은 눈의 값 중 하나 빼어 상금을 구했습니다.

 

모든 눈이 다른 경우는 

elif len(set(dice_numbers)) == 3:
    price = max(dice_numbers) * 100

동일하게 주어진 눈의 값을 set으로 만들었을 때 중복이 제거가 되어도 3개인 경우를 이 경우로 쳤습니다.

모든 눈이 다른 경우는 가장 큰 수로 상금을 구했습니다.

 

나머지는 모두 2개의 눈이 같은 경우로

else:
    price = 1000 + (sum(dice_numbers) - sum(list(set(dice_numbers)))) * 100

2개의 눈이 같은 수를 구하는 것은 모든 눈을 합한 값 - 중복을 제거한 수들의 합 으로 구해서 상금을 구했습니다.

 

전체 코드는 아래를 참고해주세요.

👨🏻‍💻 코드 ( Solution )

def three_dice(dice_numbers):
    price = 0
    if len(set(dice_numbers)) == 1:
        price = 10000 + dice_numbers[0] * 1000
    elif len(set(dice_numbers)) == 3:
        price = max(dice_numbers) * 100
    else:
        price = 1000 + (sum(dice_numbers) - sum(list(set(dice_numbers)))) * 100
    
    return price

if __name__ == "__main__":
    dice_numbers = list(map(int, input().split()))
    print(three_dice(dice_numbers))
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments