JLOG
[C++] 백준 1247 : 부호 본문
#include <iostream>
#include <climits>
using namespace std;
/* 부호 https://www.acmicpc.net/problem/1247
if 문에서 overflow 발생 시 undefined behavior에 해당되 자동으로 false 처리
LONG_MAX, LONG_MIN 이용해서 overflow를 안 일으키고 검사하는 것이 포인트
https://www.acmicpc.net/board/view/56858 */
int main(void){
long long result=0, overflow=0;
int n;
for (int test_case=0; test_case<3; test_case++){
std::cin>>n;
result = 0;
overflow = 0;
for (int i=0; i < n; i++){
long long tmp;
std::cin>>tmp;
if (result > 0 and tmp > 0 and tmp > LLONG_MAX - result) {
//result = result + tmp - LLONG_MIN;
overflow += 1;
}
if (result < 0 and tmp < 0 and tmp < LONG_MIN - result) {
//result = result + tmp - LLONG_MAX;
overflow -= 1;
}
result += tmp;
}
if (overflow < 0){
std::cout<<"-\n";
}
else if (overflow > 0){
std::cout<<"+\n";
}
else if (result==0){
std::cout<<"0\n";
}
else if (result < 0){
std::cout<<"-\n";
}
else if (result > 0){
std::cout<<"+\n";
}
}
}
'Algorithm > 알고리즘 풀이' 카테고리의 다른 글
[C++] 백준 1966 : 프린터 큐 (0) | 2021.06.13 |
---|---|
[C++] 백준 1929 : 소수 (0) | 2021.06.11 |
[C++] 백준 1654 : 랜선자르기 (0) | 2021.06.04 |
[C++] 백준 1874 : 스택 수열 (0) | 2021.06.02 |
[C++] 백준 1018 : 체스판 다시 칠하기 (0) | 2021.05.21 |
Comments