#include #include using namespace std; string str; int main(void) { cin >> str; stack s; char before = ' '; int ans = 0; for (int i = 0; i < str.size(); i++) { if (str[i] == '(') s.push(str[i]); else { if (before == '(') { s.pop(); ans += s.size(); } else if (before == ')') { s.pop(); ans++; } } before = str[i]; } printf("%d", ans); return 0; } 풀이 : 6분 코딩 : 4분 디버깅 : 1분 이전 문자를 보고 분기하는데 이전 문자 업데이트..
#include using namespace std; int gear[4][8]; int sub[8]; void roll(int g, int direc, int check) { int before[8]; for (int i = 0; i < 8; i++) before[i] = gear[g - 1][i]; if (direc == 1) for (int i = 0; i < 8; i++) sub[i] = gear[g - 1][(i + 7) % 8]; else for (int i = 0; i < 8; i++) sub[i] = gear[g - 1][(i + 1) % 8]; for (int i = 0; i < 8; i++) gear[g - 1][i] = sub[i]; if (g == 1) { if (before[2] ..
#include #include int remote[10]; int min(int a, int b) { return a < b ? a : b; } int possible(int a) { int i, j, ab, digit; int result = 0; ab = a; while (1) { digit = ab % 10; if (remote[digit] == -1) { result = 0; break; } if (ab < 10) { result += 1; break; } ab /= 10; result++; } return result; } int main(void) { int i, n, m, x, digit, MAX; int MIN = 987654321; scanf("%d", &n); scanf("%d", &..
#include int n, start; int cost[10][10]; int visit[10]; int min(int a, int b) { return a < b ? a : b; } int city(int cur, int visited) { int i; int ret = 987654321; if (visited == n) { if (cost[cur][start] != 0) { ret = 0; ret += cost[cur][start]; for (i = 0; i < n; i++) { if (i == start) continue; ret += visit[i]; } } return ret; } for (i = 0; i < n; i++) { if (visit[i] == 0 && cost[cur][i] != ..
#include int memo[10][101]; int step(int n, int start) { int ret = 0; if (n == 1) return 1; if (memo[start][n] != 0) return memo[start][n]; if (start > 0) ret += step(n - 1, start - 1); ret %= 1000000000; if (start < 9) ret += step(n - 1, start + 1); memo[start][n] = ret % 1000000000; return memo[start][n]; } int main(void) { int i, n; int result = 0; scanf("%d", &n); for (i = 1; i < 10; i++) { ..
#include int stickers[2][100000]; int memo[3][100000]; int n; int max(int a, int b) { return a > b ? a : b; } int maxsum(int col, int before) { int ret = 0; if (col == n) return 0; if (memo[before][col] != -1) return memo[before][col]; ret = maxsum(col + 1, 0); if(before != 2) ret = max(ret, maxsum(col + 1, 2) + stickers[1][col]); if(before != 1) ret = max(ret, maxsum(col + 1, 1) + stickers[0][c..
#include #include #include using namespace std; int solution(string begin, string target, vector words) { int answer = 0; vector wordmap; int location = -1; words.insert(words.begin(), begin); wordmap.resize(words.size()); for(int i = 0; i < words.size(); i++) { if(words[i] == target) { location = i; break; } } if(location == -1) return 0; for(int i = 0; i < words.size(); i++) { for(int j = 0; j..