반응형

문제에서 나오는 경우의 수 별로 if문을 작성하면 해결할 수 있다
같은 눈이 3개가 나오는 경우
같은 눈이 2개만 나오는 경우
모두 다른 눈이 나오는 경우
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int a,b,c;
cin >> a >> b >> c;
if (a == b && b == c)
{
cout << 10000 + (a * 1000);
}
else if (a == b || b == c || a == c)
{
if (a == b)
{
cout << 1000 + (a * 100);
}
else if (b == c)
{
cout << 1000 + (b * 100);
}
else if (a == c)
{
cout << 1000 + (a * 100);
}
}
else
{
int tmp = max({a,b,c});
cout << tmp * 100;
}
return 0;
}
else if 부분에서 a가 어차피 공통으로 있으니까
else if (a == b || a == c) cout << 1000 + a*100;
이런 식으로 통합해서 해도 괜찮을 것 같다
배열과 정렬을 이용한 풀이도 있어서 소개하려고 한다
// Authored by : BaaaaaaaaaaarkingDog
// Co-authored by : -
// http://boj.kr/a66f45063a2a4f1bb9816a2080077fe3
#include <bits/stdc++.h>
using namespace std;
int main(void){
ios::sync_with_stdio(0);
cin.tie(0);
int a[3];
cin >> a[0] >> a[1] >> a[2];
sort(a, a+3);
if(a[0] == a[2]) cout << 10000 + a[0]*1000; // 세 수가 동일
else if(a[0] == a[1] || a[1] == a[2]) cout << 1000 + a[1]*100; // 두 수가 동일
else cout << a[2]*100;
}
정렬된 배열에서 처음과 끝 인덱스 값이 같으면 세 수가 동일하다는 의미고
제일 큰 값이 맨 뒤의 값이니까 가능한 풀이였다
참고로 max함수를 이용할 때 3개 이상을 비교할 때는 { }로 감싸주어야 한다
반응형
'algorithm > 기초 코드' 카테고리의 다른 글
| [algorithm] 백준 2490번 윷놀이 (0) | 2025.10.18 |
|---|---|
| [algorithm] 백준 10093번 숫자 (0) | 2025.10.12 |
| [algorithm] 백준 2753번 윤년 (0) | 2025.10.12 |
| [algorithm] 백준 2752번 세수정렬 (0) | 2025.10.12 |
| [algorithm] 백준 9498번 시험 성적 (0) | 2025.10.12 |
