문제N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다. 각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성하시오. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다. ▶️ 입력 조건 첫째 줄에 정수 N이 주어진다. 다음 N개의 줄에는 각 로프가..
문제옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다.길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자. S = A[0] × B[0] + ... + A[N-1] × B[N-1] S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다.S의 최솟값을 출력하는 프로그램을 작성하시오. ▶️ 입력 조건 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다.▶️ 출력 조건첫째 줄에 S의 최솟값을 출..
문제민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다. 폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오. ▶️ 입력 조건 첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 50이다.▶️ 출력 조건첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다.풀이우선 '.'을 기준으로 split을 한 후 배열로 만들고 각 원소별로 AAAA 혹은 BB로 개수에 맞게 채우고join을 해서 출력하면 된다고 생각했다.개수가 딱 떨어지지 않을 경우 (4 혹은 2로) -1을 출력하며 마무리..
문제준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. ▶️ 입력 조건첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)\▶️ 출력 조건첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다.풀이문제를 보자마자 전형적인 그리디 유형이라는 생각이들었다.그렇기 때문에 가장 높은 화폐부터 나누어가면 된다고 생각했다.우선 배열로 동전값을 받은 후 so..
문제상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. ▶️ 입력 조건첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000)▶️ 출력 조건상근이가 배달하는 봉지의 최소 개수를 출력한다..
문제어떠한 수 N이 1이 될 때까지 다음의 두 과정 중 하나를 반복적으로 수행하려고 한다.단 2번 과정은 N이 K로 나누어떨어질 때만 선택할 수 있다.N에서 1을 뺀다.N을 K로 나눈다.N과 K가 주어질 때 N이 1이 될 때까지 1번 혹은 2번의 과정을 수행해야 하는 최소 횟수를 구하는 프로그램을 작성하시오. ▶️ 입력 조건첫째 줄에 N(2 ▶️ 출력 조건첫째 줄에 N이 1이 될 때까지 1번 혹은 2번의 과정을 수행해야 하는 횟수의 최솟값을 출력한다.풀이간단한 조건문으로 문제를 해결할 수 있다.N을 K로 나누었을 때 나머지가 0일 경우에는 나눗셈 연산을아닐 경우에는 N에서 1을 빼도록 조건문을 설정하여 해당 조건문을 N이 1이 될 때 까지 반복하면 된다. # 입력 데이터 정의n, k = map(int, ..
문제숫자 카드 게임은 여러 개의 숫자 카드 중에서 게임 룰을 지켜 가장 높은 숫자를 뽑는 게임이다.룰은 아래와 같다.숫자가 쓰인 카드들이 N x M 형태로 놓여 있다. 이때 N은 행의 개수를 의미하며, M은 열의 개수를 의미한다.먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다.그 다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다.따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 한다.해당 예제에서 카드를 고를 때 첫 번째, 두 번째 행의 경우 1을 뽑게된다.그러다 세 번째 행을 선택하는 경우 최종적으로 2를 뽑게된다.카드들이 N x M 형태로 놓여 있..
문제다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하여 가장 큰 수를 만드는 법칙이다.단, 배열의 특정한 인덱스에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없다.예를 들어 순서대로 2, 4, 5, 4, 6으로 이루어진 배열이 있을 때 M이 8, K가 3이라고 가정하자.이 경우 특정한 인덱스의 수가 연속해서 3번까지만 더해질 수 있으므로 큰 수의 법칙에 따른 결과는 6+6+6+5+6+6+6+5 = 46이 된다. ▶️ 입력 조건첫째 줄에 N(2 둘째 줄에 N개의 자연수가 주어진다. 각 자연수는 공백으로 구분한다.K는 항상 M보다 작거나 같다.▶️ 출력 조건첫째 줄에 큰 수의 법칙에 따라 더해진 답을 출력한다.풀이이 문제를 해결하기 위해서는 우선 둘째 줄에 받은 자연수 배열을 정렬한 후 ..