목록알고리즘 (508)
어흥
문제 링크: programmers.co.kr/learn/courses/30/lessons/17678 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 [23:59,23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59] 18:00 programmers.co.kr 1. 주의할 점 - 문자열 처리를 통해 각 시간을 어떻게 저장할 것인지 정한다 2. 구현 - Arr[10] 벡터를 생성하여 셔틀의 수용인원만큼 수를 각 셔틀에 저장한다(최대 셔틀이 10개라고 적혀있다) - 각 시간을 분으로 환산하여 V 벡터에 저장한 이후, 오름차순으로 정렬한 이후, Queue에 수를 순차적으로 넣..
문제 링크: www.acmicpc.net/problem/2143 2143번: 두 배열의 합 첫째 줄에 T(-1,000,000,000 ≤ T ≤ 1,000,000,000)가 주어진다. 다음 줄에는 n(1 ≤ n ≤ 1,000)이 주어지고, 그 다음 줄에 n개의 정수로 A[1], …, A[n]이 주어진다. 다음 줄에는 m(1≤m≤1,000)이 주어지고, 그 다 www.acmicpc.net 1. 주의할 점 - 메모리 제한이 작다. 메모리를 최대한 적게 쓰도록 한다 - Map을 1개 사용하고, 이분탐색을 통해 답을 유추한다 2. 구현 - A배열과 B배열을 입력받은 후, A배열에서 만들 수 있는 부분 배열을 Ma Map에 저장한다(숫자, 해당 숫자를 만들 수 있는 개수) - B배열의 부분 배열을 구할 때마다 Ma..
문제 링크: www.acmicpc.net/problem/13422 13422번: 도둑 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 마� www.acmicpc.net 1. 주의할 점 - N과 M이 같을때의 조건을 잘 세운다 - 최대 몇개를 확인하면 되는지 식을 잘 세운다 - While문 안에 For문을 이용하여 Sum을 계산하지 않는다 -> 두 포인터를 활용한다 2. 구현 - 입력받을 배열의 크기를 2배로 하여 N + M -1개의 배열에서 연속된 M개씩 고르도록 한다 - While문을 몇번 반복할것인지 Len을 구해야 한다. Len : 기존배열에서 한바퀴 더 돌아서 ..
문제 링크: www.acmicpc.net/problem/14391 14391번: 종이 조각 영선이는 숫자가 쓰여 있는 직사각형 종이를 가지고 있다. 종이는 1×1 크기의 정사각형 칸으로 나누어져 있고, 숫자는 각 칸에 하나씩 쓰여 있다. 행은 위에서부터 아래까지 번호가 매겨져 있고, www.acmicpc.net 1. 주의할 점 - 최대 4*4이므로, 브루트포스 알고리즘을 사용한다 - 사용한 숫자처리를 제대로 하면 된다 2. 구현 - 배열을 입력받은 후, 왼쪽위 원소부터 브루트포스를 수행한다 - 브루트포스는 다음과 같은 순서로 진행된다. 해당 원소만 포함, 해당 원소포함 + 아래숫자들 포함, 해당 원소포함 + 오른쪽 숫자들 포함 - 단, 위의 기준은 항상 추가할 숫자가 방문처리되어 있지 않다는 가정하에 진..
문제 링크: www.acmicpc.net/problem/16971 16971번: 배열 B의 값 첫째 줄에 배열 A의 크기 N, M이 주어진다. 둘째 줄부터 N개의 줄에 배열의 원소가 주어진다. 배열은 정수로만 이루어져 있다. www.acmicpc.net 1. 주의할 점 - 각각의 원소가 배열 B가 만들어지기 위해 몇번 사용되는지 미리 계산한다. 다음과 같다 N = 10, M = 6의 경우, 배열 A의 각 원소가 더해지는 횟수 //1~M열 1 2 2 2 2 1//1행 2 4 4 4 4 2 2 4 4 4 4 2 2 4 4 4 4 2 2 4 4 4 4 2 2 4 4 4 4 2 ~ 2 4 4 4 4 2 2 4 4 4 4 2 2 4 4 4 4 2 1 2 2 2 2 1//N행 즉, 맨 위와 아래행(K번)은 나머지 ..
문제 링크: swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV6c6bgaIuoDFAXy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 주의할 점 - 조건이 많다 - 초기화를 잘 해준다 - 순서대로 처리한다(새로운 손님 도착? -> 접수 창구 비었는가? -> 대기 창구로 이동 가능? -> 수리 창구 비었는가? -> 끝났는가?) 2. 구현 - 사람들에 대한 정보는 바로 Queue에 넣는다 - 창구 직원들에 대한 정보는 Info2 구조체(pidx: 손님번호, needTime: 처리하는데 소요되는 시간, remain: 처리되기까지 남..
문제 링크: www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이�� www.acmicpc.net 1. 주의할 점 - DP를 사용해서 문제를 해결한다(점화식) 2. 구현 - 1개의 타일: 1개(1) - 2개의 타일: 2개(00, 11) - N개의 타일을 사용할 때 : (N-1개의 타일 + N-2개의 타일)%MOD (여기서 MOD는 15746) 따라서 점화식은 N>=3일때, Arr[N] = (Arr[N-1] + Arr[N-2])%MOD로 이루어진다 #define MOD 15746 #include u..
문제 링크: https://www.acmicpc.net/problem/16562 16562번: 친구비 첫 줄에 학생 수 N (1 ≤ N ≤ 10,000)과 친구관계 수 M (0 ≤ M ≤ 10,000), 가지고 있는 돈 k (1 ≤ k ≤ 10,000,000)가 주어진다. 두번째 줄에 N개의 각각의 학생이 원하는 친구비 Ai가 주어진다. ( www.acmicpc.net 1. 주의할 점 - 분리집합으로 집단을 나눈 이후, 그 집단에서 가장 작은 친구비를 더한다 2. 구현 - 입력을 받으면서 Par[](자신의 조상을 나타냄)배열을 초기화한다 - 친구 관계를 입력받을 때, 같은 집합이 형성되도록 Make_union() 함수를 사용한다. 그리고 Make_union() 함수를 사용할 때, 작은 친구비를 가진 학생..