본문 바로가기

백준 알고리즘66

[백준 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.
[백준 C++] 2206번: 벽 부수고 이동하기 1. 문제 https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 2. 알고리즘 분류 그래프 이론 그래프 탐색 너비 우선 탐색 3. 소스 코드 #include #include #include #include #include #include #define INF 987654321 using namespace std; int N, M; int map[1003][1003]; int visited1[1003][1003]; // 벽을 .. 2023. 2. 8.
[백준 C++] 1865번: 웜홀 1. 문제 https://www.acmicpc.net/problem/1865 1865번: 웜홀 첫 번째 줄에는 테스트케이스의 개수 TC(1 ≤ TC ≤ 5)가 주어진다. 그리고 두 번째 줄부터 TC개의 테스트케이스가 차례로 주어지는데 각 테스트케이스의 첫 번째 줄에는 지점의 수 N(1 ≤ N ≤ 500), www.acmicpc.net 2. 알고리즘 분류 그래프 이론 벨만-포드 3. 소스 코드 #include #include #define INF 987654321 using namespace std; struct edge { int s, e, t; }; // N : 지점의 수, M : 도로의 개수, W : 웜홀의 개수 int N, M, W; vector edges; // 벨만 코드 알고리즘 bool bel.. 2023. 2. 5.