c++ / 실2 / 그리디 알고리즘
https://www.acmicpc.net/problem/1541
거의 5개월만에 다시 시작한 알고리즘 문제풀이라 적응하는 데 어려움이 좀 있었다.
+가 나오면 더하되, 한 번 -가 나온 이후로는 +여도 다 빼면 되는 방식으로 풀었다.
stoi를 사용하면 더 간결하게 풀 수 있을 것 같다. 또한, 문자열을 두 번 탐색하는 부분이 마음에 안드는 코드이다. 더 좋은 방법을 생각하여 다시 풀어보고 싶은 문제이다.
다음은 전체 코드이다.
#include <iostream>
#include <cstring>
using namespace std;
int main(){
string s;
int num[26];
int len, n = 0, ans = 0, i = 0, j = 0;
bool flag = false;
cin >> s;
len = s.length();
for(i = 0; j < len; i++) {
n = 0;
for(; s[j] >= '0' && s[j] <= '9'; j++) {
n *= 10;
n += s[j] - '0';
}
num[i] = n;
j++;
}
ans = num[0];
int k = 1;
for(int j = 0; j < len && k < i; j++) {
if (s[j] == '+' && !flag) {
ans += num[k];
k++;
}
else if (s[j] == '-' || flag) {
flag = true;
ans -= num[k];
k++;
}
}
cout << ans;
return 0;
}'알고리즘' 카테고리의 다른 글
| [C++] 7576 토마토 (0) | 2025.01.24 |
|---|---|
| [C++] 16953 A->B (0) | 2025.01.14 |
| [자바] 1744 수 묶기 (0) | 2024.08.04 |
| [자바] 1041 주사위 (0) | 2024.08.03 |
| [자바] 1092 배 (0) | 2024.08.01 |