본문 바로가기

알고리즘84

[알고리즘 문제풀이] 기타 코딩테스트 1-3 문제 : 땅콩 먹기 A씨는 N 개의 땅콩을 발견했다. 땅콩은 1차원 수직선 위에 존재하고, i번째 땅콩은 원점으로부터 i 만큼 떨어져 있으며 A씨는 원점으로부터 e 만큼 떨어져 있는 곳에 있다. A씨는 땅콩을 먹는 것을 아주 좋아하지만, 모든 땅콩 중에서 M 개만을 먹을 수 있다. A씨는 기억력이 좋지 않아 지금까지 지나온 길에 빨간 선을 그리는 마법을 부려왔다. 물론 이 수직선에서도 마찬가지이다. 즉, A씨가 수직선 위의 위치 3에서 위치 5까지 움직인다면, 위치 3에서 위치 5까지 총 길이 2의 빨간 선이 그려진다. 단, 이미 빨간 선이 칠해진 곳을 다시 이동하게 될 경우, 새롭게 빨간 선이 그려지지는 않는다. A씨가 N 개의 땅콩 중 M 개의 땅콩을 먹으려 할 때, 그려지게 될 빨간 선 중 최소 길.. 2021. 3. 8.
[백준문제풀이] 1167 트리의 지름 풀이일시 : 2020-12-28 문제 : 트리의 지름이란, 트리에서 임의의 두 점 사이의 거리 중 가장 긴 것을 말한다. 트리의 지름을 구하는 프로그램을 작성하시오. 입력 : 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2≤V≤100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. (정점 번호는 1부터 V까지 매겨져 있다고 생각한다) 먼저 정점 번호가 주어지고, 이어서 연결된 간선의 정보를 의미하는 정수가 두 개씩 주어지는데, 하나는 정점번호, 다른 하나는 그 정점까지의 거리이다. 예를 들어 네 번째 줄의 경우 정점 3은 정점 1과 거리가 2인 간선으로 연결되어 있고, 정점 4와는 거리가 3인 간선으로 연결되어 있는 것을 보여준다. 각 .. 2021. 1. 4.
[백준문제풀이] 11725 트리의 부모 찾기 풀이 일시 : 2020-12-27 문제 : 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. 입력 : 첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두 정점이 주어진다. ex) 7 1 6 6 3 3 5 4 1 2 4 4 7 출력 : 첫째 줄부터 N-1개의 줄에 각 노드의 부모 노드 번호를 2번 노드부터 순서대로 출력한다. ex) 4 6 1 3 1 4 풀이 : 입력이 주어지는 것을 vector에 받아 트리를 구성해준다. BFS로 모든 노드를 탐색하며 각각 노드마다 자신의 부모를 체크해줄 수 있다. 자신의 부모를 체크했다면 parent 배열에 저장해주고 한번에 출력해.. 2021. 1. 4.
[백준문제풀이] 7453 합이 0인 네 정수 풀이일시 : 2020-12-26 문제 : 정수로 이루어진 크기가 같은 배열 A, B, C, D가 있다. A[a], B[b], C[c], D[d]의 합이 0인 (a, b, c, d) 쌍의 개수를 구하는 프로그램을 작성하시오. 입력 : 첫째 줄에 배열의 크기 n (1 ≤ n ≤ 4000)이 주어진다. 다음 n개 줄에는 A, B, C, D에 포함되는 정수가 공백으로 구분되어져서 주어진다. 배열에 들어있는 정수의 절댓값은 최대 228이다. ex) 6 -45 22 42 -16 -41 -27 56 30 -36 53 -37 77 -36 30 -75 -46 26 -38 -10 62 -32 -54 -6 45 출력 : 합이 0이 되는 쌍의 개수를 출력한다. 풀이 : 투포인터 알고리즘으로 풀이할 수 있다. 입력을 arr[j.. 2021. 1. 4.
[삼성역량테스트] 15683 감시 풀이일시 : 2020-10-17 ​ 문제 : 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감시할 수 있는 방법은 다음과 같다. 1번 CCTV는 한 쪽 방향만 감시할 수 있다. 2번과 3번은 두 방향을 감시할 수 있는데, 2번은 감시하는 방향이 서로 반대방향이어야 하고, 3번은 직각 방향이어야 한다. 4번은 세 방향, 5번은 네 방향을 감시할 수 있다. CCTV는 감시할 수 있는 방향에 있는 칸 전체를 감시할 수 있다. 사무실에는 벽이 있는데, CCTV는 벽을 통과할 수 없다. CCTV가 감시할 수 없는 영역은 사각지대라고 한다. CCTV는 회전시킬.. 2021. 1. 3.
[백준문제풀이] 1644 소수의 연속합 풀이일시 : 2020-12-24 ​ 문제 : 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수들이 있다. 몇 가지 자연수의 예를 들어 보면 다음과 같다. 3 : 3 (한 가지) 41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 53 : 5+7+11+13+17 = 53 (두 가지) 하지만 연속된 소수의 합으로 나타낼 수 없는 자연수들도 있는데, 20이 그 예이다. 7+13을 계산하면 20이 되기는 하나 7과 13이 연속이 아니기에 적합한 표현이 아니다. 또한 한 소수는 반드시 한 번만 덧셈에 사용될 수 있기 때문에, 3+5+5+7과 같은 표현도 적합하지 않다. 자연수가 주어졌을 때, 이 자연수를 연속된 소수의 합으로 나타낼 수 있는 경우의 수를 구하는 프로그램을 작성하시오... 2021. 1. 3.
[백준문제풀이] 1806 부분합 풀이일시 : 2020-12-24 ​ 문제 : 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. ​ ​ 입력 : 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. ex) 10 15 5 1 3 5 10 7 4 9 2 8 ​ ​ 출력 : 첫째 줄에 구하고자 하는 최소의 길이를 출력한다. 만일 그러한 합을 만드는 것이 불가능하다면 0을 출력하면 된다. ex) 2 ​ ​ 풀이 : ​ 1. 일반 BP로 풀기 (시.. 2021. 1. 3.
[백준문제풀이] 2003 수들의 합 2 풀이일시 : 2020-12-23 ​ 문제 : N개의 수로 된 수열 A[1], A[2], …, A[N] 이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 A[i] + A[i+1] + … + A[j-1] + A[j]가 M이 되는 경우의 수를 구하는 프로그램을 작성하시오. ​ ​ 입력 : 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. ex1) 4 2 1 1 1 1 ex2) 3 300 100 200 3 ​ ​ 출력 : 첫째 줄에 경우의 수를 출력한다. ex1) 3 ex2) 1 ​ ​ 풀이 : 1. BP로 풀이하는방법 ​ 단.. 2021. 1. 3.
반응형