[백준 2480 파이썬] 주사위 세개 - 조건문 (if, elif, else, 복수 조건, max 함수)
안녕하세요.
어느덧 조건문 마지막 문제입니다. 주사위 세개를 던지는 게임을 만드는... 것은 아니네요! 주사위 결과를 입력값으로 받아 규칙에 따라 상금을 계산하는 문제입니다.
문제
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개의 눈이 빈칸을 사이에 두고 각각 주어진다.
출력
첫째 줄에 게임의 상금을 출력 한다.
문제 분석
같은 눈이 3개, 2개, 모두 다를 때 각각의 경우를 상정해야 합니다.
(if) a==b==c (and 조건)
(elif) a==b, b==c, c==a 각각 (or 조건)
(else) 서로 다른 경우
그리고 각각의 출력값을 지정해 주어야 하죠.
if, elif 부분은 같은 값 중 어느 하나에 문제에서 제시한 산식을 적용하면 되고, else 부분은 가장 큰 값에 100을 곱해줘야 하는데, if 문을 또다시 사용할 경우 코드가 복잡해지므로 max 함수를 사용하도록 하겠습니다.
그럼 간단하게 해결될 것 같은데, 답안을 함께 보겠습니다!
답안
아주 단순하게, 논리적인 순서를 그대로 작성했습니다. prize 변수를 사용하지 않고 print문을 각각 조건문에 넣어도 무방합니다. max 함수는 이어지는 괄호 내의 값들 중 최대값을 return하므로 최대값x100 만큼 prize 변수에 반영되겠죠? 참고로 최소값은 당연하게도 min 함수를 사용하면 됩니다.
참고로 (elif) 부분의 세 경우를 or로 묶을 수는 있지만 각각 다르게 출력해야 하기 때문에 그대로 쓰긴 어렵고, 짧게 쓰려면 두개 정도 묶어서 겹치는 원소를 출력값 산식에 넣어주면 될 것 같습니다. 위 코드보다 직관적이지는 않지만 if/elif 문을 덜 쓰는 아래 방법이 결과물에서 시간적으로는 유리하네요. (BOJ 채점 시간)
기분좋게 결과 확인해보도록 하겠습니다.
이만 마치도록 하겠습니다.
읽어주셔서 감사합니다.
'파이썬 > BOJ_조건문' 카테고리의 다른 글
[백준 2525 파이썬] 오븐 시계 - 조건문 (if, else, 시간 분 계산) (0) | 2022.12.30 |
---|---|
[백준 2884 파이썬] 알람 시계 - 조건문 (if, else, 시간 분 계산) (0) | 2022.12.30 |
[백준 14681 파이썬] 사분면 고르기 - 조건문 (if, else 2x2 feat. 동전 던지기) (0) | 2022.12.28 |
[백준 2753 파이썬] 윤년 - 조건문 (if, else 중첩 feat. 인셉션) (0) | 2022.12.26 |
[백준 9498 파이썬] 시험 성적 - 조건문 (if, elif, else) (0) | 2022.12.26 |
댓글