728x90
2480번: 주사위 세개
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개
www.acmicpc.net
풀이
1~6의 눈을 가진 주사위 3개가 있다.
1. 같은 눈이 3개 나오면 10000+같은눈*1000
2. 같은 눈이 2개 나오면 1000+같은눈*100
3. 다 다른 눈이 나오면 가장 큰 눈*100
입력할 첫째 줄에는 주사위 3개의 눈이 각각 나오면 된다
if문으로 풀 수 있는데 마찬가지로 조금 지저분해진다.
같은 눈 2개의 경우 a == b != c / b == c != a / c == a != b 3가지 경우를 다 구해야 해서
코드 1번처럼 리스트와 인덱스로 풀어봤다.
먼저 리스트로 주사위 수 3개를 한 줄에 받는다.
3개니까 받고 나면 [1, 2, 3] 이런 식일텐데 각 인덱스에 새로운 문자를 부여해준다.
1번은 다 같게 해주면 되고,
2번의 경우에는 리스트를 한번 정렬해준다.
이전 글에서도 3개라서 내림/오름해도 상관 없었는데 똑같다.
그렇게 해주면 1번째 인덱스(2번째 요소)는 앞 또는 뒤와 같은 눈일 것이다.
3번째 가장 큰 눈을 구할 때는 max를 써주면 된다.
if문에서 조금씩 벗어나보자.
코드
dice = list(map(int, input().split()))
a = dice[0]
b = dice[1]
c = dice[2]
if a == b == c :
print(10000+(a*1000))
elif a == b != c or b == c != a or c == a != b :
dice.sort()
print(1000+(dice[1]*100))
elif a != b != c :
print(100*max(dice))
a, b, c = map(int, input().split())
if a == b == c :
print(10000+(a*1000))
elif a == b != c :
print(1000+(100*a))
elif b == c != a:
print(1000+(100*b))
elif c == a != b:
print(1000+(100*c))
elif a != b != c:
print(max(a, b, c)*100)
728x90
'🥧 Python > ⚙️ 코딩테스트' 카테고리의 다른 글
[백준-Python] 10156번: 과자 (0) | 2023.02.16 |
---|---|
[백준-Python] 4101번: 크냐? (0) | 2023.02.15 |
[백준-Python] 10039번: 평균 점수 (0) | 2023.02.15 |
[백준-Python] 2753번: 윤년 (0) | 2023.02.15 |
[백준-Python] 1789번: 수들의 합 (0) | 2023.02.15 |