[단계별로 풀어보기] 조건문 - 주사위 세개 (2480)
2022. 4. 12. 22:17ㆍ공부/알고리즘
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를 이용하면 항상 같은 눈을 사용할 수 있다.
'공부 > 알고리즘' 카테고리의 다른 글
[단계별로 풀어보기] [python3] 기본 수학 2 - 베르트랑 공준 (4948) (0) | 2022.04.26 |
---|---|
[단계별로 풀어보기] [python3] 기본 수학 2 - 소수 구하기 (1929) (0) | 2022.04.26 |
[단계별로 풀어보기 - python3] 기본 수학 2 - 소인수분해 (11653) (0) | 2022.04.18 |
[단계별로 풀어보기] 기본 수학 2 - 소수 (2581) (0) | 2022.04.18 |
[단계별로 풀어보기] 기본 수학 2 - 소수 찾기 (1978) (0) | 2022.04.12 |