조건문-7단계_주사위 세개
단계 | 제목 | 설명 | |
---|---|---|---|
2 | 조건문 | if 등의 조건문을 사용해 봅시다. | |
소단계 | 문제번호 | 제목 | |
6 | 2525 | 오븐시계 | |
범위가 더 넓은 시간 계산 문제 |
문제
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개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오.
입력
첫째 줄에 3개의 눈이 빈칸을 사이에 두고 각각 주어진다.
출력
첫째 줄에 게임의 상금을 출력 한다.
내 제출
A , B , C = map(int, input().split())
if A == B == C:
print(10000 +(A)*1000)
elif A == B and A != C:
print(1000 +(A)*100)
elif A == C and A != B:
print(1000 +(A)*100)
elif A != B and A != C:
dice = [A,B,C]
max = dice
print(max*100)
결과
오답: 틀렸습니다.
수정 제출
A , B , C = map(int, input().split())
if A == B == C:
print(10000 +(A)*1000)
elif A == B and A != C:
print(1000 +(A)*100)
elif A == C and A != B:
print(1000 +(A)*100)
elif B == C and A != B:
print(1000 +(B)*100)
elif A != B and A != C:
dice = [A,B,C]
print(max(dice)*100)
결과
정답
오답 이유
이번문제의 오답 역시 문법적오류는 없습니다.
주요한 오답 파트로는 두가지가 있습니다.
1.최댓값 추출
dice = [A,B,C]
max = dice
print(max*100)
주사위 눈이 세개가 모두 다른 눈이 나온 경우 최댓값을 추출해야 하는데, 이때 max() 함수를 사용하면 편합니다.
하지만 이때 max() 를 사용하기 위해서는 List 를 입력해주어야 하므로 기존의 int형의 주사위 눈을 List 화 해주어야 하고 해당 List 변수를 max(List) 형태로 입력해야 하지만 잘못 입력하였습니다.
elif A == B and A != C:
print(1000 +(A)*100)
elif A == C and A != B:
print(1000 +(A)*100)
또한 주사위 눈 두개가 같은 경우에 한가지 경우를 빼먹었습니다.
2.해결원리
이를
elif A == B and A != C:
print(1000 +(A)*100)
elif A == C and A != B:
print(1000 +(A)*100)
elif B == C and A != B:
print(1000 +(B)*100)
elif A != B and A != C:
dice = [A,B,C]
print(max(dice)*100)
와 같이 올바른 max() 사용 문법과 조건추가로 해결하였습니다.