문제
https://www.acmicpc.net/problem/1744
걸린 시간
01 : 21 : 51 실패
풀이
C++
#include <bits/stdc++.h>
#define fastio ios::sync_with_stdio(0), cin.tie(0)
#define all(c) c.begin(), c.end()
#define INF 1e9
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
bool compare(int a, int b){
return a > b;
}
int main(){
fastio;
int N;
cin >> N;
vector<int> p, n, z, o;
int t;
for(int i = 0; i < N; i++){
cin >> t;
if(t == 0) z.push_back(t);
else if(t == 1) o.push_back(t);
else if(t > 0) p.push_back(t);
else if(t < 0) n.push_back(t);
}
sort(all(p), compare);
sort(all(n));
int ans = 0;
for(int i = 0; i < (int)n.size()-1; i+=2){
ans += n[i]*n[i+1];
}
if(n.size()%2 == 1) if(z.size() == 0) ans += n[n.size()-1];
for(int i = 0; i < (int)p.size()-1; i+=2){
ans += p[i]*p[i+1];
}
if(p.size()%2 == 1) ans += p[p.size()-1];
for(int i = 0; i < o.size(); i++){
ans += o[i];
}
cout << ans << "\n";
return 0;
}
1과 다른 양수는 묶지 않고 따로 더하는것이 더 크다는 것을 생각하지 못해서 틀린 문제.
틀리지 않은 음수에서의 처리에 문제가 있는 줄 알고 수정하다 풀이가 오히려 거꾸로 돌아갔다.
새롭게 알게 된 점은 vector 의 size() 메소드는 반환값이 unsigned int 형으로 타입캐스팅 없이 빼기 연산을 진행하면 underflow 가 일어난다.
'Baekjoon' 카테고리의 다른 글
Baekjoon 1629번 곱셈 (0) | 2021.04.25 |
---|---|
Baekjoon 19948번 음유시인 영재 (0) | 2021.04.18 |
Baekjoon 9663번 N-Queen (0) | 2021.04.14 |
Baekjoon 10610번 30 (0) | 2021.03.21 |
Baekjoon 8682번 Happy monkey (0) | 2021.03.21 |
댓글