본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Bronze 4][Python] 2480번 : 주사위 세개

by 빛밤하늘 2021. 6. 16.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

2480번: 주사위 세개

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

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin


# 첫째 줄에 3개의 눈을 빈 칸을 사이에 두고 입력합니다.
# 주사위의 눈이므로 1부터 6까지입니다.
# 각각 정수형으로 변환하고 리스트 변수에 넣어줍니다.
spots = list(map(int, stdin.readline().split(' ')))

# 3개의 눈이 모두 같다면
if spots[0] == spots[1] == spots[2]:
    # 10000 + (같은 눈) * 1000을 출력합니다.
    print(10000 + spots[0] * 1000)
# 3개의 눈이 모두 다르다면
elif spots[0] != spots[1] and spots[0] != spots[2] and spots[1] != spots[2]:
    # (가장 큰 눈) * 100을 출력합니다.
    print(max(spots) * 100)
# 3개의 눈 중 2개만 같다면
elif len(set(spots)) == 2:
    # 같은 눈을 저장할 변수를 선언합니다.
    same = None

    # 첫 번째 눈과 두 번째 눈이 같은 경우
    if spots[0] == spots[1]:
        # same에 첫 번째 눈의 값을 저장합니다.
        same = spots[0]
    # 첫 번째 눈과 세 번째 눈이 같은 경우
    elif spots[0] == spots[2]:
        # same에 첫 번째 눈의 값을 저장합니다.
        same = spots[0]
    # 두 번째 눈과 세 번째 눈이 같은 경우
    elif spots[1] == spots[2]:
        # same에 두 번째 눈의 값을 저장합니다.
        same = spots[1]

    # 1000 + (같은 눈인 same의 값) * 100을 출력합니다.
    print(1000 + same * 100)

결과

 

첫 번째로 제출했을 때 3개의 눈이 모두 다른 경우의 조건을

spot[0] != spot[1] != spot[2]으로 넣었습니다.

그리고 틀렸습니다 결과를 보게 되었습니다.

 

파이썬에서는 크기를 비교하는 조건을 넣을 때 다른 언어와는 달리

0 <= (변수) <= 100과 같이 넣어도 문제가 발생하지 않습니다.

그래서 서로 다른 경우인 !=도 크기 비교와 같이 저런 식으로 설정해도 되는 줄 알았는데

질문에 있는 내용을 찾아보니 그런 식으로 넣으면 안된다고 하였습니다.

 

그래서 다른 언어처럼 수정해서 제출해보니 맞았습니다 결과를 볼 수 있었습니다.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글