문제 https://www.acmicpc.net/problem/11256 11256번: 사탕 당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰 www.acmicpc.net 풀이 1. 상자의 세로 길이와 상자의 가로 길이를 입력받음 -> 각각 a와 b에 할당 2. a * b를 data 리스트에 추가 -> 내림차순으로 정렬(상자의 개수를 최소한으로 구해야하기에) 3. 반복문 통해 data 리스트의 값 하나씩 확인 -> 사탕의 개수 - 현재 확인하고 있는 상자의 크기 -> result 1증가시킴 4. 만약 사탕의 개수가 0이하일 경우 더 이상 상자에 넣을 사탕이 없으므로..
Koala - 11기/코딩테스트 준비 스터디
문제링크 https://www.acmicpc.net/problem/19941 19941번: 햄버거 분배 기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사 www.acmicpc.net 코드 input = __import__('sys').stdin.readline n,k = map(int,input().split()) data = input() visited = [False for _ in range(n)] cnt = 0 for i in range(n): if data[i] =='P': for j in range(i-k,i+k+1): if j=n:continue if ..
https://www.acmicpc.net/problem/19941 19941번: 햄버거 분배 기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사 www.acmicpc.net import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.StringTokenizer; public class Main { static int N; stati..
문제 https://www.acmicpc.net/problem/1461 1461번: 도서관 세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책 www.acmicpc.net 풀이 m개의 책을 가지고 움직일 때 먼 곳의 값이 이동하는 거리가 된다. 최소 걸음 수를 구하기 위해 0으로 돌아올 필요가 없는 가장 먼 곳을 마지막으로 가야 한다. 가장 먼 곳을 제외한 나머지는 모두 왕복을 하게 된다. 책의 위치가 정수이므로 음수, 양수를 각각 리스트에 저장한다. 음수는 오름차순 정렬을 하고, 양수는 내림차순 정렬을 한다. 한 번에 m 개씩 옮길 수 있으므로 배열의 길이를 m으..
https://www.acmicpc.net/problem/20937 20937번: 떡국Naver D2를 아시나요? D2는 For Developers, By Developers의 약자로, 개발자들을 위해 개발자들이 직접 만들어 가고 있는 네이버 개발자 지원 프로그램입니다. 네이버가 축적한 기술과 지식을 공유하고, 외www.acmicpc.net문제코드 import sys input = sys.stdin.readline import heapq n=int(input()) arr=list(map(int, input().split())) y=min(arr) heapq.heapify(arr) tower=1 num=0 while arr: x=heapq.heappop(arr) if x==y: num+=1 else: y=..
문제 설명 책 순서대로 정렬하는데, 책을 정렬 할 수 있는 방법은 책을 빼서 맨 위에 올려놓는 방법 뿐이다. 입력 받은 책을 나열하고, 뒤에서부터 읽어 순서가 맞지 않은 책의 개수가 정답이다. 뒤에서부터 읽을 때 책이 연속적으로 순서가 맞지 않아도 된다. 코드 #include #include #include using namespace std; int N; // 책의 개수 int answer; // 정답 int main() { cin >> N; answer = N; vector book(N); for (int i = 0; i > book[i]; } vector sortedBook(N); copy(book.begin(), book.end(), sortedBook.begin()..
https://www.acmicpc.net/problem/11256 11256번: 사탕 당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰 www.acmicpc.net 1. 문제풀이 그리디 알고리즘을 이용한 문제로, 상자를 최소한으로 사용하기 위해서 크기가 큰 상자부터 사탕을 담으면 된다. 입력받은 상자의 정보를 바탕으로 상자의 크기를 우선순위 큐에 저장하고, 사탕의 개수가 0이하가 될 때까지 반복문을 돌면서 우선순위가 높은 원소를 꺼내면서 상자의 개수를 1씩 증가시킨다. 2. C++ 코드 #include #include using namespace std; int ..
Problem Solution 1. 먼저 두 개의 정수 N과 K를 입력 받는다. 2. N 길이의 문자열을 입력받는다. 3. 각각의 'P' (사람) 위치에 대해 가장 가까운 햄버거('H')를 찾아서 먹을 수 있는지 확인한다. 4. for 루프를 통해 문자열을 순회하면서 'P' 위치를 찾고, 그 주변에 있는 햄버거 중에서 최대 K 거리 이내에 있는 햄버거를 찾아서 먹는다. 5. 햄버거를 먹었다면, 그 햄버거는 'E' (먹었다는 표시)로 표시되고, 더 이상 해당 햄버거를 먹을 수 없다. 6. 위의 과정을 모든 'P' 위치에 대해 반복하고, 햄버거를 먹은 사람의 수를 계산한다. 7. 최종적으로, 먹을 수 있는 햄버거를 먹은 사람의 수를 출력한다. Answer #include #include #include us..
문제 https://www.acmicpc.net/problem/20937 20937번: 떡국 Naver D2를 아시나요? D2는 For Developers, By Developers의 약자로, 개발자들을 위해 개발자들이 직접 만들어 가고 있는 네이버 개발자 지원 프로그램입니다. 네이버가 축적한 기술과 지식을 공유하고, 외 www.acmicpc.net Algorithm "떡국 그릇 위에는 크기가 더 작은 떡국 그릇 하나를 쌓을 수 있다. 쌓은 떡국 그릇 위에 같은 방법으로 떡국 그릇을 또 쌓을 수 있다. 예를 들어, 크기가 4, 2, 3, 1인 떡국 그릇에 대해 4−3−2−1순서로 쌓을 수 있지만 3-4-2-1 순서로는 쌓을 수 없다. 이렇게 쌓은 한 개 이상의 떡국 그릇들을 떡국 그릇 탑이라고 하자." ..
문제 https://www.acmicpc.net/problem/19941 19941번: 햄버거 분배 기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사 www.acmicpc.net 풀이 문자열을 처음부터 끝까지 반복한다. 입력된 문자열에서 P를 찾는다. P일때 거리가 k이하인 H를 앞뒤로 찾는다. H가 없으면 다음 P로 넘어간다. 추가로 j가 0보다 작아지면 배열 시작 전의 요소를 찾고 있다는 뜻이므로 유효하지 않고, j가 n보다 크거나 같게 되면 배열 끝 너머의 요소를 찾고 있다는 뜻이므로 유효하지 않기에, j의 범위를 제한해준다. 이미 선택한 H는 다시 고르지 않..
풀이 상자를 높이와 너비순으로 정렬한다. -> 큰 상자부터 사용할 수 있어서 최소한의 상자를 사용할 가능성이 높아진다. 각 상자를 순서대로 확인하면서 해당 상자에 사탕을 담을 수 있는지 확인한다. 담을 수 있는 경우에는 해당 상자에 담고 candlesLeft에서 담은 사탕의 개수를 뺀다. 모든 상자를 확인하면서 담은 후, usedBoxes에는 사용한 상자의 개수가 저장된다. 마지막으로 useBoxes를 출력하여 최소한의 상자 개수를 표시한다. 코드 #include #include #include using namespace std; struct Box { int height; int width; }; bool compareBoxes(const Box &a, const Box &b) { return a.h..
https://www.acmicpc.net/problem/19941 19941번: 햄버거 분배 기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사 www.acmicpc.net # 문제 설명 문자열의 길이 N, 햄버거를 선택할 수 있는 거리 K, 사람(P)과 햄버거(H)의 위치가 문자열로 주어질 때, 햄버거를 먹을 수 있는 사람의 최대 수를 출력한다. # 문제 풀이 왼쪽부터 차례로 문자열을 읽어나갈 때, 왼쪽의 사람이 햄버거를 먹을 수 있는데 먹지 않는 경우, 손해가 발생한다. 따라서 왼쪽부터 읽어나가며 사람이 햄버거를 먹을 수 있는 경우의 수를 count 한다. 필자..