문제
해석
문제에서 조건의 기준을 "눈이 몇 개 같냐"를 주었고, 주사위 개수를 입력받는 다면 생각할게 많지만 3개로 고정되었기 때문에 단순히 문제가 풀라는 대로 조건을 세우고 연산하면 되는 문제입니다.
풀이
같은 눈이 몇 개인지에 따라 출력이 달라지는 if 문을 세우는 방식도 다양하겠지만 저는 같은 눈이 두 개 이상인 경우와 같은 눈이 없는 경우를 우선으로 해 문제를 풀겠습니다.
if (a == b || b == c || c == a) {
if (a == b && b == c)
cout << 10000 + a * 1000;
else if (a == b)
cout << 1000 + a * 100;
else if (b == c)
cout << 1000 + b * 100;
else if (a == c)
cout << 1000 + a * 100;
}
else
cout << ...
같은 눈이 두 개이상인 경우, 눈이 전부 같을 때와 두 개만 같을 때 출력을 달리 한 if 문입니다.
눈이 전부 다른 수일 때 최댓값을 뽑기 위해서 간단한 함수코드를 작성했습니다.
int max_number(int a, int b, int c) {
if (a > b && a > c)
return a;
else if(b > a && b > c)
return b;
else
return c;
}
즉 마지막 else의 코드블록은 cout << max_number(a, b, c) * 100; 하면 문제의 모든 경우를 고려했습니다.
함수를 사용하지 않고, 이항 연산자를 중복해서 사용하면 간단히 세수의 최댓값을 출력할 수 있습니다.
(a > b) ? (a > c) ? a : c : (b > c) ? b : c
결과는 다음과 같습니다.
#include<iostream>
using namespace std;
int max_number(int a, int b, int c) {
if (a > b && a > c)
return a;
else if(b > a && b > c)
return b;
else
return c;
}
int main() {
int a, b, c;
cin >> a >> b >> c;
if (a == b || b == c || c == a) {
if (a == b && b == c)
cout << 10000 + a * 1000;
else if (a == b)
cout << 1000 + a * 100;
else if (b == c)
cout << 1000 + b * 100;
else if (a == c)
cout << 1000 + a * 100;
}
else
cout << max_number(a, b, c) * 100;
}
정리
문제에 주어진 조건을 코드로 작성하는 연습을 도와주는 문제입니다.
또한 원하는 기능을 수행해 주는 함수를 직접 만들어 사용하거나 이항 연산자를 통해 세 수의 최대 값을 출력할 수 있습니다.
'프로그래밍 > 코딩 테스트 연습' 카테고리의 다른 글
[백준] 10950번 : A+B - 3 (3단계) (C++) (1) | 2024.01.09 |
---|---|
[백준] 2739번 : 구구단 (3단계) (C++) (1) | 2024.01.09 |
[백준] 2525번 : 오븐 시계 (2단계) (C++) (0) | 2024.01.08 |
[백준] 2884번 : 알람 시계 (2단계) (C++) (0) | 2024.01.08 |
[백준] 14681번 : 사분면 고르기 (2단계) (C++) (1) | 2024.01.08 |