touch 파일을 생성한다. 파일이 이미 존재한다면 해당 파일을 변경하지 않고 수정 시간을 업데이트한다. $ touch file_name grep 주어진 표현과 일치하는 파일/입력 스트림의 라인을 모두 출력한다. 파일 이름을 함께 출력하므로 여러 개의 파일에 적용할 때 편리하다. /etc의 모든 파일에 대해 root라는 단어를 포함하는 라인을 출력하고자 한다면 다음 명령을 사용할 수 있다. $ grep root /etc/* 다른 명령어의 실행 결과를 입력으로 줄 수 있다. 현재 디렉토리에서 이름에 "file"을 포함하는 파일을 찾고자하는 경우 다음 명령을 사용할 수 있다. $ ls | grep file less 출력 길이가 화면 길이를 넘는 경우 한 페이지 씩 볼 수 있게 한다. 다음 페이지를 보려면 스..
#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..