[BOJ 25186] 백준 25186번 - INFP 두람
1. 문제Permalink
25186. INFP 두람 (2022 서강대학교 청정수컵 L번)
2. 풀이Permalink
원형으로 섰을 때 이웃한 두 사람과 옷이 겹치지 않으려면, 각 종류별 옷의 개수가 전체 옷 개수의 절반을 넘지 않으면 된다.
모든 옷 개수에 대해서 이 조건을 만족하면, 두람이가 행복할 수 있다. 하나의 d라도 다음 조건을 만족하지 않으면, 두람이는 행복할 수 없다.
단, 예외 사항이 한 개 있다. N이 1이고 해당 옷 개수가 1개라면, 위 코드에 의하면 “Unhappy”지만, 실제로는 “Happy”가 정답이다. 따라서, 이 경우만 따로 처리를 해주어야 한다.
3. 채점 결과Permalink
4. 회고Permalink
N이 1이고 해당 d가 1인 경우를 예외처리 하지 않아 WA를 한 번 받았다.
5. 코드Permalink
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <bits/stdc++.h> | |
using namespace std; | |
#define FASTIO cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); | |
#define FOR(i,a,b) for(int i=(a);i<=(b);i++) | |
#define ROF(i,a,b) for(int i=(a);i>=(b);i--) | |
#define ll long long int | |
#define pii pair<int, int> | |
#define PQ priority_queue | |
#define LEN(v) int(v.size()) | |
#define ALL(v) v.begin(),v.end() | |
#define INF 2e9 | |
#define LINF 1e18 | |
int main() { | |
FASTIO; | |
int N; | |
cin >> N; | |
vector<ll> d(N); | |
ll sum = 0; | |
FOR(i, 0, N - 1) { | |
cin >> d[i]; | |
sum += d[i]; | |
} | |
if (N == 1 && d[0] == 1) { | |
cout << "Happy"; | |
return 0; | |
} | |
bool flag = true; | |
FOR(i, 0, N - 1) { | |
if (sum - d[i] < d[i]) { | |
flag = false; | |
} | |
} | |
cout << (flag ? "Happy" : "Unhappy"); | |
return 0; | |
} |
댓글남기기