본문 바로가기

분류 전체보기

(370)
[BOJ] 5567번 결혼식 (C++) https://www.acmicpc.net/problem/5567 5567번: 결혼식 예제 1의 경우 2와 3은 상근이의 친구이다. 또, 3과 4는 친구이기 때문에, 4는 상근이의 친구의 친구이다. 5와 6은 친구도 아니고, 친구의 친구도 아니다. 따라서 2, 3, 4 3명의 친구를 결혼식에 초대 www.acmicpc.net #include #include #include #include using namespace std; int n, m; vector v[501]; bool visited[501]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m; for(int i = 0; i < m; i++){ int a, b; cin ..
[BOJ] 5502번 팰린드롬 (C++) https://www.acmicpc.net/problem/5502 5502번: 팰린드롬 팰린드롬이란 대칭 문자열이다. 즉, 왼쪽에서 오른쪽으로 읽었을때와 오른쪽에서 왼쪽으로 읽었을때 같다는 얘기다. 당신은 문자열이 주어졌을때, 최소 개수의 문자를 삽입하여 팰린드롬이 www.acmicpc.net #include #include #include using namespace std; int dp[5001][5001]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; string s, r_s; cin >> s; r_s = s; reverse(r_s.begin(), r_s.end()); for(int i = 1; i
[BOJ] 12015번 가장 긴 증가하는 부분 수열 2 (C++) https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net #include #include using namespace std; int n; int arr[1000001]; vector seq; void binary_search(int num){ int low = 0, high = seq.size() - 1, mid; int ret = 1000000007; while(low = num){ if(ret > mid) ret = mid; high = mid -..
[BOJ] 11054번 가장 긴 바이토닉 부분 수열 (C++) https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net #include #include #include using namespace std; int n; vector arr(1001, 0); vector dp(1001, 1); vector r_dp(1001, 1); int main() { cin >> n; for(int i = 0; i > arr[i]; } for(int y = 0; y < n; y++){ for(int x = 0; x < y..
[BOJ] 2156번 포도주 시식 (C++) https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net #include #include using namespace std; int arr[10010]; int dp[10010]; int n; int main() { cin >> n; for(int i = 1; i > arr[i]; } dp[1] = arr[1]; dp[2] = arr[1] + arr[2]; for(int i = 3; i
[BOJ] 1021번 회전하는 큐 (C++) https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net #include #include using namespace std; int main(){ int n, m, num, index, count = 0; deque d; cin >> n >> m; for (int i = 1; i > num; for (int i = 0; i < d.size(); ++i) { if (d[i] == num) { index = i; break; } } if (index ..
[BOJ] 1261번 알고스팟 (C++) https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net #include #include #define INF 987654321 using namespace std; int M, N; int dy[4] = { 1, -1, 0, 0 }; int dx[4] = { 0, 0, 1, -1 }; int arr[101][101]; int dist[101][101]; void dijkstra() { queue pq; pq.push({ 0, 0 ..
[BOJ] 1504번 특정한 최단 경로 (C++) https://www.acmicpc.net/problem/1504 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net #include #include #include #include #define MAX 801 #define INF 987654321 using namespace std; vector v[MAX]; int d[MAX]; int n, e; int v1, v2; void dijkstra(int start){ for(int i = 0; i start_to_ne..