[단계별로 풀어보기] 조건문 - 주사위 세개 (2480)

2022. 4. 12. 22:17공부/알고리즘

2480번: 주사위 세개 (acmicpc.net)

 

2480번: 주사위 세개

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

www.acmicpc.net

 

답안)

a, b, c = map(int, input().split())

if a == b == c:
    print(10000+a*1000)
elif (a != b) & (a != c) & (b != c):
    print(max([a,b,c])*100)
else:
    if a != b:
        print(1000+c*100)
    else:
        print(1000+a*100)

애초에 a, b, c를 배열 i의 요소로 받았으면 max에 새로운 배열을 생성하지 않아도 될 것 같다.

 

두 개가 일치할 때의 경우가 가장 많으므로 그걸 제일 뒤인 else문으로 퉁쳤다.

2.번 문제를 풀기 위해서는 같은 수가 무엇이 나왔는지를 알아야 했다.

의미 그대로 a==b, a==c 그리고 b==c를 조건문을 각각 설정하여 만들 수도 있지만 더 빠른 길을 모색해보자.

한번 뒤집어서 !=를 이용하여 표를 그려보면

조건 같은 변수 중복되는 변수
a != b a, c / b, c c
a != c a, b / b, c b
b != c a, b / a, c a

이처럼 두 변수가 같지 않을 때는 비교하지 않은 나머지 한 수가 중복되는 것을 볼 수 있다.

따라서 a, b가 같지 않을 때는 c는 항상 a와 b 둘 중 하나와 같은 눈이 나오므로 c를 이용하고

a와 b가 같다면 a 또는 b를 이용하면 항상 같은 눈을 사용할 수 있다.