본문 바로가기

분류 전체보기

(842)
[백준 5014번] 스타트링크 (C++) 문제링크 : https://www.acmicpc.net/problem/5014 #include using namespace std; int f, s, g, u, d; queue q; int elevator[1000001]; void bfs() { int dx[2] = { u, -d }; //위, 아래 q.push(s); elevator[s] = 1; //첫 시작점을 1로 초기화 while (!q.empty()) { int cur = q.front(); q.pop(); for (int i = 0; i f) { continue; } //범위 조건 if (elevator[nx]!=0) { continu..
[백준 2468번] 안전영역 (C++) 문제링크 : https://www.acmicpc.net/problem/2468 #include using namespace std; int arr[102][102]; bool check[102][102]; int n,cnt, mh=-1; int result = 0; int dx[] = { -1,1,0,0 }; int dy[] = { 0,0,-1,1 }; queueq; void bfs(int x, int y) { check[x][y] = 1; q.push({ x,y }); while (!q.empty()) { int xx = q.front().first, yy = q.front().second; q.pop(); for (int i = 0; i < 4; i++) { int nx = xx + dx[i]; //..
[백준 2583번] 영역 구하기 (C++) 문제링크 : https://www.acmicpc.net/problem/2583 #include using namespace std; int area[100][100]; int n, m, k, cnt = 0, cnt2 = 0; int x1, x2, y11, y2; int dx[4] = { -1,1,0,0 }; int dy[4] = { 0,0,-1,1 }; queueq; vector v; void bfs(int x, int y) { area[x][y] = 1; q.push({ x,y }); while (!q.empty()) { int yy = q.front().first, xx = q.front().second; q.pop(); for (int i = 0; i < 4; i++) { int nx = xx + ..
[백준 1890번] 점프 (C++) 문제링크 : https://www.acmicpc.net/problem/1890 #include using namespace std; int arr[100][100]; long long dp[100][100]; //범위가 크므로 long long 선언 int n; int main() { cin >> n; for (int i = 0; i > arr[i][j]; //게임판 입력 } } dp[0][0] = 1; //무조건 첫번째 값은 지나므로 초기화 값은 1 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (arr[i][j] == 0) { break; } //마지막..
[백준 1051번] 숫자 정사각형 (C++) 문제링크 : https://www.acmicpc.net/problem/1051 #include using namespace std; int n, m; int arr[50][50]; int main() { cin >> n >> m; string input; for (int i = 0; i > input; //숫자를 한줄로 입력받기에 스트링으로 받음 for (int j = 0; j < m; j++) { arr[i][j] = input[j] - '0'; //받은 문자열(숫자)를 하나하나 다시 숫자로 변환 } } int k = min(n, m); //정사각형의 최대 길이 저장 while (k--) { for (int i = 0; k + i < n; i++) //인덱스에 범위 값 설..
[백준 16922] 로마 숫자 만들기 (C++) 문제링크 : https://www.acmicpc.net/problem/16922 #include using namespace std; int n, result; int arr[4] = { 1, 5, 10, 50 }; bool check[1001]; //50 * 20 + 1 void func(int cnt, int index, int sum) { if (cnt == n) { if (!check[sum]) // 1 + 5 = 5 + 1이기에 조건을 검 { check[sum] = 1; //방문처리 result++; //조건에 맞는 값 카운트 셈 } return; } for (int i = index; i < 4; i++) { func(cnt + 1, i, sum + arr[i]); //현재 인덱스 기준으로 자..
[백준 2841번] 외계인의 기타 연주 (C++) 문제링크 : https://www.acmicpc.net/problem/2841 #include using namespace std; int N, P; stackplay[7]; int moving = 0; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> N >> P; while (N--) { int a, b; cin >> a >> b; if (play[a].empty()) //해당 줄이 비어있다면 해당 플렛 푸쉬 { play[a].push(b); moving++; } else if (play[a].top() < b) //뒤에 값이 더 크다면 해당 플렛 푸쉬 { play[a].push(b); moving++; } else if (play[a].t..
[백준 25644번] 최대 상승 (C++) 문제링크 : https://www.acmicpc.net/problem/25644 #include using namespace std; #define fastio ios_base::sync_with_stdio(0); cin.tie(0); int n, result = 0, sum = 0; vector arr; int main() { fastio; cin >> n; for(int i=0; i> a; arr.push_back(a); //a1 ~ an 푸쉬 } for (int i = arr.size() - 1; i >= 0; i--) { result = max(result, arr[i]); //최댓값 저장 sum = max(sum, result - arr[i]); //최댓값과 현재 값의 차이 중 가장 큰 값을 저..