728x90
📌 문제
2480번: 주사위 세개
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개
www.acmicpc.net
📌 내 코드
# 2480 주사위 세 개
a, b, c = map(int, input().split())
if a==b==c:
print(10000+a*1000)
elif a==b or b==c or c==a:
print(1000+a*100)
elif a!=b!=c:
print(max(a, b, c)*100)
💡 풀이
a와 b가 같을 때, b와 c가 같을 때, c와 b가 같을 때의 수행 코드가 동일해서 or로 묶어서 코드를 짰는데, 파이참에서 예제 출력 시에는 문제가 없었으나 백준에 제출하니 틀렸다고 나왔다.
아무래도 a==b==c 일 경우 거칠 수 있는 조건문이 돼버려서 백준에서 제시된 예제 문제 외에 다른 수를 넣었을 경우 출력이 정상적으로 되지 않는 건가 싶다.
그래서 그냥 노가다(?) 형태로 각각 a와 b가 같을 경우, b와 c가 같을 경우, c와 a가 같을 경우를 나눠 elif()로 조건문을 짰다.
📌 수정 후 코드
# 2480 주사위 세 개
a, b, c = map(int, input().split())
if a==b==c:
print(10000+a*1000)
elif a==b:
print(1000+a*100)
elif b==c:
print(1000+b*100)
elif c==a:
print(1000+c*100)
elif a!=b!=c:
print(max(a, b, c)*100)
📌 정리
예전에 풀었을 땐 한 번에 맞춘 문제였는데, 코드를 짧게 짜려하다 보니 틀렸던 것 같다. 코드를 단순하게 짜도 될 때 복잡하게 생각하게 되는 것 같아서 그 부분은 연습이 필요할 것 같다.
적극적인 피드백은 언제나 환영입니다:)