[ 백준 문제 2480 / 파이썬 ] 주사위 세개
2023. 2. 5. 17:31ㆍ백준/파이썬
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.
- 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.
- 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
- 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×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())
if A==B==C:
print(10000 + A * 1000)
elif A==B!=C or C==A!=B:
print(1000 + A * 100)
elif B==C!=A:
print(1000 + C * 100)
else:
if A>B>C or A>C>B:
print(A * 100)
elif B>A>C or B>C>A:
print(B * 100)
elif C>A>B or C>B>A:
print(C * 100)
딱봐도 복잡하지 않나요..
더 간단하게 코드를 작성할 방법이 있을 것 같습니다.
방법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 + C * 100)
else:
print(max(A,B,C) * 100)
조건문의 특성을 생각해봤습니다.
위에서부터 조건이 충족하는지 따지고 조건을 충족하지 못하면 다음 if문으로 내려옵니다.
이 말인 즉슨
if A==B==C:
print(10000 + A * 1000)
를 충족하지 않을 때 다음 else if문이 작동된다는 것입니다.
그렇다면
elif A==B!=C or C==A!=B:
print(1000 + A * 100)
elif B==C!=A:
print(1000 + C * 100)
이렇게 써줄 필요가 없게 되죠.
elif A == B or A == C:
print(1000 + A * 100)
elif B == C:
print(1000 + C * 100)
더 간단하게 고쳤습니다.
else:
if A>B>C or A>C>B:
print(A * 100)
elif B>A>C or B>C>A:
print(B * 100)
elif C>A>B or C>B>A:
print(C * 100)
이 코드 역시 너무 복잡하니까 고쳐줍시다.
매개변수로 받은 인자값 중 최대값을 리턴해주는 함수
max()
max() 이용하여
else:
print(max(A,B,C) * 100)
훨씬 간단한 표현이 가능합니다:)
'백준 > 파이썬' 카테고리의 다른 글
[ 백준 문제 10950 / 파이썬 ] A+B - 3 (0) | 2023.02.05 |
---|---|
[ 백준 문제 2739 / 파이썬 ] 구구단 (0) | 2023.02.05 |
[ 백준 문제 2525 / 파이썬 ] 오븐 시계 (0) | 2023.02.05 |
[ 백준 문제 2884 / 파이썬 ] 알람 시계 (0) | 2023.02.05 |
[ 백준 문제 14681 / 파이썬 ] 사분면 고르기 (0) | 2023.02.05 |