본문 바로가기

알고리즘 풀이16

[백준][C++] 1337번: 올바른 배열 https://www.acmicpc.net/problem/1337 1337번: 올바른 배열 첫째 줄에 배열의 크기 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 배열의 원소가 한 줄에 하나씩 주어진다. 원소는 1,000,000,000보다 작거나 같은 음이 아닌 정수이 www.acmicpc.net 어떤 배열 속에 있는 원소 중 5개가 연속적일 때 올바른 배열이라 한다. 배열이 주어졌을 때 올바른 배열이 되기 위해 추가되어야 할 원소의 최소 개수를 구하는 문제이다. 이중 반복문을 사용해 풀어주었다. 1. 배열을 정렬 2. 배열의 비교 원소가 해당 원소의 올바른 배열에 포함되는지 확인 -> 차이값이 5미만이면 된다. 1,2를 모든 원소에 반복하면 배열에서 가장 긴 연속되는 원.. 2024. 4. 3.
[백준][C++] 11724번: 연결 요소의 개수 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어 www.acmicpc.net 정점의 개수와 간선의 양 끝점이 주어졌을 때 연결 요소의 개수를 구하는 문제이다. 예제 입력1은 연결된 구역이 2개로 연결 요소의 개수가 2이고 예제 입력2는 모든 정점이 연결되어있어서 연결 요소의 개수가 1이다. 간선의 정보를 통해 정점끼리의 '연결성'을 프로그래밍 언어로 어떻게 표현할 것인가가 핵심이다. 이를 위해 정점의 부모 정.. 2024. 4. 3.
[백준][C++] 4256번: 트리 https://www.acmicpc.net/problem/4256 4256번: 트리 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 노드의 개수 n이 주어진다. (1 ≤ n ≤ 1,000) BT의 모든 노드에는 1부터 n까지 서로 다른 번호가 매겨져 있다. 다음 www.acmicpc.net 이진 트리를 전위, 중위 순회한 결과가 주어졌을 때 후위 순회한 결과를 출력하는 문제이다. 먼저 전위 순회는 루트 노드 -> 왼쪽 자식 -> 오른쪽 자식 순으로 방문하고 중위 순회는 왼쪽 자식 -> 루트 노드 -> 오른쪽 자식 순으로 방문한다. 예제 입력으로 주어진 전위 순회한 결과 : 3 6 5 4 8 7 1 2와 중위 순회한 결과 : 5 6 8 4 3 1 2 7를 보자. 일단 전위 .. 2024. 3. 30.
[백준][C++] 1004번: 어린 왕자 https://www.acmicpc.net/problem/1004 1004번: 어린 왕자 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주 www.acmicpc.net 출발점과 도착점이 주어지고 행성계의 중점과 반지름이 주어질 때 최소한의 행성계의 진입/이탈 횟수를 구하는 문제이다. 출발점과 도착점 중 하나만 주어진 행성계에 포함되어야 이동하는 경로에 진입/이탈이 한 번 발생한다. 나머지 경우에는 진입/이탈이 발생하지 않는다. 둘 다 행성계 밖에 있으면 진입할 필요가 없고 둘 다 안에 있으면 이탈할 필요가 없기 때문이다. 이 아이디어를 통해 원의 .. 2024. 3. 29.