문제

코드
#include <stdio.h>
int main() {
int a, b, c;
int prize = 0;
int max = 0;
scanf("%d %d %d", &a, &b, &c); {
if (a == b && b == c) {
prize = 10000 + a * 1000;
}
else if (a == b) {
prize = 1000 + a * 100;
}
else if (b == c) {
prize = 1000 + b * 100;
}
else if (a == c) {
prize = 1000 + c * 100;
}
else if (a > b && a > c) {
prize = a * 100;
}
else if (b > a && b > c) {
prize = b * 100;
}
else if (c > b && c > a) {
prize = c * 100;
}
printf("%d", prize);
return 0;
}
}
문제를 보고 복잡하게 생각할 것 없이 일어날 수 있는 경우의 수를 적어본다.
경우의 수
같은 눈이 3개 나오는 경우
333 |
같은 눈이 2개만 나오는 경우
133,313,331 |
모두 다른 눈이 나오는 경우
321,312 231,213 123,132 |
해석
이렇게 모두 적어 놓고 보면 생각보다 쉽게 코드를 작성할 수 있다.
같은 눈이 세개가 나오는 경우엔 논리연산자를 이용해서 작성하면 a == b, b == c 는 a == c도 되기 때문에
a == b && b == c로 작성을 하면 되는데 이제부터 조금 헷갈린다.
같은 눈이 2개만 나온 경우를 한 줄에 조건을 만들어서 if문을 사용하려고 해봤지만 그렇게 복잡하게 할 필요없이 하나하나 일일이 조건을 걸어줘도 되겠다는 생각에 하나하나 노가다로 작성했다..
모두 다른 눈이 나오는 경우는 경우를 보고 조건을 만들었다기 보다 받는 상금에 초점을 뒀다.
모두 다른 눈이 나오는 경우의 상금은 가장 큰 눈에서 100을 곱한 값을 받기 때문에 a가 가장 큰경우, b가 가장 큰 경우, c가 가장 큰 경우를 조건으로 설정해서 코드를 작성해보았다.
어찌저찌 결과값은 나왔고 문제는 풀었지만 가독성이 좋지 않은 것 같다.
다음에는 가독성이 좋게끔 코드를 작성해봐야겠다.
'C언어 > 백준 알고리즘' 카테고리의 다른 글
[백준/C언어] 2739번 구구단 (0) | 2023.11.16 |
---|---|
[백준/C언어] 14681번 사분면 고르기 (0) | 2023.11.16 |
[백준/C언어] 1330번 - 두 수 비교하기 (0) | 2023.11.16 |
[백준/C언어] 10926번 - ??! (0) | 2023.11.16 |
[백준/C언어] 10951번 A+B - 4 (0) | 2023.11.16 |