본문 바로가기

백준 알고리즘68

[백준 C++] 1197번: 최소 스패닝 트리 1. 문제 https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net 2. 알고리즘 분류 그래프 이론 최소 스패닝 트리 3. 소스 코드 #include #include #include #include using namespace std; int parent[10005]; bool is_cycle; vector graph; // 부모를 찾는 함수 int find_parent(int x) { if (parent[.. 2023. 6. 10.
[백준 C++] 27172번: 수 나누기 게임 1. 문제 https://www.acmicpc.net/problem/27172 27172번: 수 나누기 게임 《보드게임컵》을 준비하다 지친 은하는 보드게임컵 참가자들을 경기장에 몰아넣고 결투를 시키는 게임 《수 나누기 게임》을 만들었습니다. 《수 나누기 게임》의 규칙은 다음과 같습니다. www.acmicpc.net 2. 알고리즘 분류 수학 프루트포스 알고리즘 정수론 소수 판정 에라토스테네스의 체 3. 소스 코드 #include #include #include using namespace std; vector numbers; int scores[1000006]; int cards[1000006]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); co.. 2023. 6. 10.
[백준 C++] 2467번: 용액 1. 문제 https://www.acmicpc.net/problem/2467 2467번: 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 - www.acmicpc.net 2. 알고리즘 분류 이분 탐색 두 포인터 3. 소스 코드 #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); // 전체 용액의 수 입력 int N; cin >> N; vector numbers(N); // 용액의 특성값 입력 for (i.. 2023. 6. 10.
[백준 C++] 2166번: 다각형의 면적 1. 문제 https://www.acmicpc.net/problem/2166 2166번: 다각형의 면적 첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다. www.acmicpc.net 2. 알고리즘 분류 기하학 다각형의 넓이 3. 소스 코드 #include #include #include using namespace std; vector polygon_coord; // 다각형 좌표 데이터 int main() { // N 값 입력 int N; scanf("%d", &N); // 다각형의 좌표 입력 for (int i = 0; i < N; i++) { double x, y; scanf("%lf %.. 2023. 6. 9.
[백준 C++] 11444번: 피보나치 수 6 1. 문제 https://www.acmicpc.net/problem/11444 11444번: 피보나치 수 6 첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 2. 알고리즘 분류 수학 분할 정복을 이용한 거듭제곱 3. 소스 코드 #include #include using namespace std; typedef vector matrix; int MOD = 1000000007; // 행렬 곱셈 정의 matrix operator*(matrix& a, matrix& b) { matrix temp(2, vector(2)); for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) .. 2023. 6. 9.
[백준 C++] 1987번: 알파벳 1. 문제 https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net 2. 알고리즘 분류 그래프 이론 그래프 탐색 깊이 우선 탐색 백트래킹 3. 소스 코드 #include #include using namespace std; int R, C; int max_count; // 지나간 최대의 칸 수 int alphabet_table[26]; // 각 알파벳 카운팅용 테이블 char map[20][20]; // 보드 정보 // 방향 배열(상,하,좌,우).. 2023. 6. 9.
[백준 C++] 20529번: 가장 가까운 세 사람의 심리적 거리 1. 문제 https://www.acmicpc.net/problem/20529 20529번: 가장 가까운 세 사람의 심리적 거리 각 테스트 케이스에 대한 답을 정수 형태로 한 줄에 하나씩 출력한다. www.acmicpc.net 2. 알고리즘 분류 수학 브루트포스 알고리즘 비둘기집 원리 3. 소스 코드 #include #include #include using namespace std; int compareMBTI(string mbti1, string mbti2, string mbti3) { int res = 0; // MBTI 4가지 척도를 비교하면서 다를 경우 거리 1씩 더하기 for (int i = 0; i < 4; i++) { if (mbti1[i] != mbti2[i]) res++; if (mbt.. 2023. 6. 7.
[백준 C++] 14940번: 쉬운 최단거리 1. 문제 https://www.acmicpc.net/problem/14940 14940번: 쉬운 최단거리 지도의 크기 n과 m이 주어진다. n은 세로의 크기, m은 가로의 크기다.(2 ≤ n ≤ 1000, 2 ≤ m ≤ 1000) 다음 n개의 줄에 m개의 숫자가 주어진다. 0은 갈 수 없는 땅이고 1은 갈 수 있는 땅, 2는 목표지점이 www.acmicpc.net 2. 알고리즘 분류 그래프 이론 그래프 탐색 너비 우선 탐색 3. 소스 코드 #include #include using namespace std; int N, M; int map[1003][1003]; // 지도 정보 int dist[1003][1003]; // 목표지점까지 거리 지도 정보 pair goal_pos; // 목표지점 위치 // .. 2023. 6. 5.
[백준 C++] 21736번: 헌내기는 친구가 필요해 1. 문제 https://www.acmicpc.net/problem/21736 21736번: 헌내기는 친구가 필요해 2020년에 입학한 헌내기 도연이가 있다. 도연이는 비대면 수업 때문에 학교에 가지 못해 학교에 아는 친구가 없었다. 드디어 대면 수업을 하게 된 도연이는 어서 캠퍼스 내의 사람들과 친해지고 www.acmicpc.net 2. 알고리즘 분류 그래프 이론 그래프 탐색 너비 우선 탐색 깊이 우선 탐색 3. 소스 코드 #include #include using namespace std; int N, M; int res = 0; char map[601][601]; // map 정보 int visited[601][601]; // 방문 여부 체크 pair I_pos; // 도연이 위치 // 방향 배열(.. 2023. 6. 5.
[백준 C++] 18110번: solved.ac 1. 문제 https://www.acmicpc.net/problem/18110 18110번: solved.ac 5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다. www.acmicpc.net 2. 알고리즘 분류 수학 구현 정렬 3. 소스 코드 #include #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; int res = 0; // 난이도 의.. 2023. 6. 5.