[백준]2480.주사위 세개

박민하·2022년 5월 12일
0

python 문제

목록 보기
5/49
post-thumbnail

문제

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개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오

1차 제출 # 오답

a, b, c = map(int,input().split())
num = {} # 딕셔너리 자료형을 갖는 변수 생성
for i in (a,b,c):
    try: num[i] +=1 # 딕셔너리에 해당 key가 있으면(오류가 없으면) 갯수 +1
    except: num[i] =1 # 없으면 갯수가 1이라고 저장
for key, value in num.items():
    if value == 3:
        print(10000+key*1000)
    elif value == 2:
        print(1000+key*100)
        break # print 후에 for문 도는 현상 방지
    else:
        print(max(a,b,c)*100)
        break # print 후에 for문 도는 현상 방지

아니 제대로 돌아가는데 왜 틀렸대 😡😡😡😡😡😡

if문 쓰려고 하다가 너무 길어질거 같아서 찾고찾아서 try except 문을 썼더니 보람이 없다 엉엉엉 이제 내가 아는건 if문 밖에 없다!! 하고 제출을 했는데

2차 제출 # 정답

a, b, c = map(int, input().split())
if a == b == c:
    print(10000+a*1000)
elif a == b or a == c:
    print(1000+a*100)
elif b == c:
    print(1000+b*100)
else:
    print(max(a,b,c)*100)

정답.... 😇 🔥 👊(심지어 코드도 더 짧다)

☑️예외처리 try & except

try:
실행할 코드
except:
예외(에러)가 발생했을 때 처리하는 코드
else:
예외가 발생하지 않았을 때 실행될 코드
finally:
예외 발생 유무와 상관 없이 실행될 코드

profile
backend developer 🐌

0개의 댓글