[Python] 백준알고리즘 #2480

r1verfuture·2022년 1월 31일
0

백준알고리즘

목록 보기
106/110

📝 문제

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개의 눈이 빈칸을 사이에 두고 각각 주어진다.

🖨 출력

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

⌨️ 예제 입력 1

3 3 6

🖨 예제 출력 1

1300

⌨️ 예제 입력 2

2 2 2

🖨 예제 출력 2

12000

⌨️ 예제 입력 3

6 2 5

🖨 예제 출력 3

600

📚 내가 제출한 코드

import sys
dice = list(map(int, sys.stdin.readline().split()))
setDice = set(dice)
if len(setDice) == 1:
    print(10000 + dice[0] * 1000)
elif len(setDice) == 2:
    for s in setDice:
        if dice.count(s) == 2:
            print(1000 + s * 100)
            break
else:
    print(max(setDice) * 100)

✏️ 내가 제출한 코드에 대한 설명

  • 입력한 주사위 수를 set에 넣어 중복을 없애준 후 그 집합의 원소 개수에 따라 나눠서 생각해주는 방식이다.
  • sys.stdin.readline() : 키보드로 입력한 값을 받는 함수 (기존의 input() 보다 속도가 훨씬 빠르다.)
  • a.split() : a를 빈칸 단위로 쪼개서 반환하는 함수
  • map(a, b) : b의 원소 하나하나를 a에 대입한 것을 반환하는 함수
  • set(a) : 리스트의 중복을 없애주기 위해 사용하는데, Type이 list형이 아니라 set형이기 때문에 주의가 필요하다.
  • len(a) : 리스트 a의 크기 (요소 개수)
  • a.count(b) : a에 포함된 b의 개수
  • max(a) : a들 중에서 가장 큰 값
  • 메모리 : 30864 KB
  • 시간 : 72 ms
  • 코드 길이 : 303 B
profile
#iOS #Swift #Developer #Python

0개의 댓글