c++에서 int를 전역변수로 초기화를 안하면 0으로 자동초기화를 해준다는 것을 알았다.(표준에서는 말이다. 0의 초기화가 보장이 안된다는 말도 있으니 따로 초기화 해주는게 나아보인다.)
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
boj 1541
#include
int sum, tmp, f, n;
char s[55] = { 1 };
int main() {
scanf("%s", s + 1);
for (int i = 1; s[i - 1]; i++) {
if ('0' <= s[i] && s[i] <= '9') {
n *= 10;
n += s[i] - '0';
}
else if (s[i] == '+') {
tmp += n;
n = 0;
}
else {
tmp += n;
n = 0;
sum += f ? -tmp : tmp;
tmp = 0;
f = (s[i] == '-');
}
}
printf("%d ", sum);
return 0;
}
풀다가 안되어서 코드를 찾아보았다. 너무나도 간단해서 감명받았다... '-' 와 '+' 에서의 변화를 깊게 생각했어야 했다고 반성한다. '-'이 나오면 그 때부터 모든 값을 다 뺄셈을 하게된다. 깊게 이해해봐야겠다.
'공부 기록들' 카테고리의 다른 글
19.11.13 (priority queue, deque) (0) | 2019.11.13 |
---|---|
19.11.05 (근황 토크, 팩토리 패턴) (0) | 2019.11.05 |
19.10.20(C++ 스택, string 입력 받기) (0) | 2019.10.21 |
19.10.18(char 배열에 대해서) (0) | 2019.10.18 |
19.10.16 (boj2217, char배열 널 값 초기화) (0) | 2019.10.17 |