[BOJ][실2][1541] 잃어버린 괄호
문제 링크
첫 번째 풀이 : Greedy
알고리즘
처음 -를 만난 이후에는 모두 음수로 괄호를 칠 수 있습니다.
정답코드 : cin 풀이 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
const int MAX = 5010;
const int MOD = 10007;
int arr[MAX][MAX];
int dp[MAX][2];
bool visited[MAX];
int dx[4] = { 0,0,1,-1 };
int dy[4] = { 1,-1,0,0 };
int n, k;
void show(void);
void bfs(int x, int y);
int main()
{
//freopen("input.txt", "r", stdin);
//ios_base::sync_with_stdio(0); cin.tie(0);
int ans = 0;
cin >> ans;
char op;
int num;
bool flag = false; // '-'를 발견하면 true;
while (true) {
cin >> op;
if (op == '-') flag = true;
if (cin.eof()) break;
cin >> num;
//cout << op << "," << num << "\n";
if (flag) ans -= num;
else ans += num;
}
cout << ans;
return 0;
}
정답코드 : cin 풀이 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
const int MAX = 5010;
const int MOD = 10007;
int arr[MAX][MAX];
int dp[MAX][2];
bool visited[MAX];
int dx[4] = { 0,0,1,-1 };
int dy[4] = { 1,-1,0,0 };
int n, k;
void show(void);
void bfs(int x, int y);
int main()
{
//freopen("input.txt", "r", stdin);
//ios_base::sync_with_stdio(0); cin.tie(0);
int ans = 0;
cin >> ans;
char op;
int num;
bool flag = false; // '-'를 발견하면 true;
while (cin >> op, !cin.eof()) {
if (op == '-') flag = true;
cin >> num;
//cout << op << "," << num << "\n";
if (flag) ans -= num;
else ans += num;
}
cout << ans;
return 0;
}
정답코드 : scanf 풀이
scanf로 char를 받아서 c != 10는 ascii 개행문자 New Line이 아닌지 확인하는 부분입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <cstdio>
#include <string>
using namespace std;
int main(void)
{
int ans = 0;
char c;
int oprd;
bool negative = false;
scanf("%d", &ans);
while (scanf("%c", &c), c != 10) {
scanf("%d", &oprd);
if (c == '-') negative = true;
if (negative) ans -= oprd;
else ans += oprd;
}
printf("%d\n", ans);
return 0;
}
Success Notice: 수고하셨습니다.
Leave a comment