hwooo
(C) 2480번: 주사위 세개 본문
https://www.acmicpc.net/problem/2480
2480번: 주사위 세개
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개
www.acmicpc.net

풀이
숫자가 모두 다른 경우엔 max값을 지정했다. if문보단 삼항연산자가 깔끔해서 처음 max값 지정 시 삼항연산자 사용.코드
#include <stdio.h>
int main() {
int n1, n2, n3, max;
scanf("%d%d%d", &n1, &n2, &n3);
if (n1 == n2 && n2 == n3) printf("%d", 10000 + 1000 * n1); // 숫자 3개 같은 경우
if (n1 != n2 && n2 != n3 && n1 != n3) { // 숫자 다 다를 경우
max = n1 < n2 ? n2 : n1;
if (max < n3) max = n3;
printf("%d", max * 100);
}
if ((n1 == n2 && n2 != n3) || (n1 == n3 && n2 != n3)) printf("%d", 1000 + n1 * 100);
else if (n2 == n3 && n1 != n2) printf("%d", 1000 + n2 * 100); // 숫자 2개만 같을 경우
}
풀이2
숫자가 2개만 같은 경우엔 어떤 숫자가 같은 지에 따라 출력문을 작성했는데,
코드가 깔끔하지 않고 if-else if문을 잘 활용하지 못 한 것 같아서 찾아봤다.
조건문 안에 다중 조건이 있을 때 if-else if문을 활용하는 게 약한 것 같다.
if (n1 == n2 && n2 == n3), else if (n1==n2)일 때 else if문은 if문의 조건과 같아지면 안 되므로 n2!=n3의 조건이 만족한다.
else의 경우에는 (n1!=n2 || n2!=n3)가 만족한다.
이번 문제에서 의도했던 바는 if - else if 문의 활용을 보고자 했던 것 같다.
실제로 찾아봤을 때도 이런 식의 코드가 더 많았다.
코드
#include <stdio.h>
int main() {
int n1, n2, n3, max;
scanf("%d%d%d", &n1, &n2, &n3);
if (n1 == n2 && n2 == n3) printf("%d", 10000 + 1000 * n1); // 숫자 3개 같은 경우
else if (n1 == n2 || n1 == n3) printf("%d", 1000 + n1 * 100);
else if (n2 == n3) printf("%d", 1000 + n2 * 100); // 숫자 2개만 같을 경우
else{
max = n1 < n2 ? n2 : n1;
if (max < n3) max = n3;
printf("%d", max * 100);
} // 숫자 다 다를 경우
}
'Study > Algorithm' 카테고리의 다른 글
(C) 10950번: A+B - 3 (0) | 2022.06.05 |
---|---|
(C) 2739번: 구구단 (0) | 2022.06.05 |
(C) 2525번: 오븐 시계 (0) | 2022.06.04 |
(C) 2884번: 알람 시계 (0) | 2022.06.04 |
(C) 14681번: 사분면 고르기 (0) | 2022.06.04 |