https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 해설 : 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 풀이 : 그리디한 방법을 사용하면 해결할 수 ..
https://www.acmicpc.net/problem/1817 1817번: 짐 챙기는 숌 첫째 줄에 책의 개수 N과 박스에 넣을 수 있는 최대 무게 M이 주어진다. N은 0보다 크거나 같고 50보다 작거나 같은 정수이고, M은 1,000보다 작거나 같은 자연수이다. N이 0보다 큰 경우 둘째 줄에 책 www.acmicpc.net 해설 : 쌓여있는 책을 박스에 차곡차곡 넣어서 택배로 미리 보내려고 한다. 책은 탑처럼 차곡차곡 쌓여있기 때문에, 차례대로 박스에 넣을 수밖에 없다. 각각의 책은 무게가 있다. 그리고 박스는 최대 넣을수 있는 무게가 있다. 이 때, 필요한 박스의 최소개수를 구하면 된다. 풀이 : 박스에 담을 수 있는 무게보다 작은동안 쌓여있는 책을 하나씩 넣는다 순서가 있으므로 정렬은 할 수..
https://www.acmicpc.net/problem/1783 1783번: 병든 나이트 첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 해설 : 병든 나이트가 N × M 크기 체스판의 가장 왼쪽아래 칸에 위치해 있다. 병든 나이트는 건강한 보통 체스의 나이트와 다르게 4가지로만 움직일 수 있다. 2칸 위로, 1칸 오른쪽 1칸 위로, 2칸 오른쪽 1칸 아래로, 2칸 오른쪽 2칸 아래로, 1칸 오른쪽 병든 나이트는 여행을 시작하려고 하고, 여행을 하면서 방문한 칸의 수를 최대로 하려고 한다. 병든 나이트의 이동 횟수가 4번보다 적지 않다면, 이동 방법을 모두 한 번씩 사용해야 한다. 이동 횟수가 4..
https://www.acmicpc.net/problem/1758 1758번: 알바생 강호 첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같 www.acmicpc.net 해설 : 줄을 서 있는 손님들이 입장하는 순서대로 강호에게 팁을 준다. 원래 주려고 했던 팁이 10원이고 3번째로 들어갔다면 10 - (3 - 1) = 8원의 팁을 주게 된다. 손님들이 주려는 팁의 정보가 주어질 때 어떻게 줄을 세워야 가장 팁을 많이 받을 수 있는지 찾는 문제이다. 풀이 : 그리디하게 풀 수 있는 문제이다. 돈을 많이 주는 사람의 순으로 정렬하고 받을 수 있는 ..
https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 해설 : 수열 N이 주어질 때 이 수열의 합을 구하려고 한다. 이 때, 두 수를 위치에 상관없이 묶어 이 두 수는 곱해서 더할 수 있다고 한다. 이 조건에서 수열 합의 최댓값을 구하는 문제이다. 풀이 : 쉬운 문제이다. 주어진 수열을 음수와 양수로 분리한 후 (0은 음수로, 1은 따로 카운팅) 음수는 작은 값에서부터 2개씩 묶고 양수는 큰 값에서부터 2개씩 묶는다. 소스코드 : 1 2 3 4 5..
https://www.acmicpc.net/problem/1700 1700번: 멀티탭 스케줄링 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전 www.acmicpc.net 해설 : 준규의 가전제품 사용 순서와, 멀티탬의 구멍 개수가 주어질 때, 모든 가전제품을 사용하기 위해 플러그를 최소한으로 빼는 횟수를 구하는 문제이다. 풀이 : 그리디하게 해결하였다. 현재 플러그가 꽉 차있을 때부터 replacement가 발생하는데 이 때 남은 프로세스들 중 빈도가 가장 낮은 프로세스를 대체하면 된다. 이 문제에서 사용된 replacement 방법은 프로세스의 replaceme..
https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 해설 : 괄호가 있던 수식에서 괄호를 모두 뺐다. 100 + 20 - 30 + 50 과 같은 수식에서 괄호를 적절히 넣어 값을 최소로 만드는 방법을 찾는 문제이다. 풀이 : 간단한 아이디어로 해결할 수 있는 문제이다. - 부호를 만난다면 다음 - 부호가 나오기 전까지 모든 + 부호들을 괄호로 묶어주면 된다. 100 + 20 - 30 + 50 의 경우 100 + 20 - (30 + 50)이 최..
https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 해설 : 수리공 항승은 물이 새는 파이프를 테이프로 막으려고 한다. 테이프의 길이 L과 막아야 할 구멍의 개수 N이 주어지고 막아야할 구멍의 위치가 주어질 때, 테이프를 최대한 적게 사용하여 모든 구멍을 막는 경우를 찾는 문제이다. 풀이 : 그리디하게 해결할 수 있다. 구멍이 있는 위치를 만났다면, 이 때 최대한 많은 구멍을 막게끔 구현하면 되는 것이다. 핵심은 막은 첫 번째 구멍..
https://www.acmicpc.net/problem/1080 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net 해설 : 0과 1로만 이루어진 행렬 A와 B가 주어질 때 A를 B로 변환시키기 위해 A를 몇 번 뒤집어야 하는지 찾는 문제이다. A를 뒤집는다는 것은, A의 3x3 만큼의 크기를 뒤집는다는 것이다, (1이면 0으로, 0이면 1로) 풀이 : A의 (0,0)부터 (N-2,N-2) 까지 탐색하며 B와 다른 원소를 만난다면 3x3만큼 뒤집어주면 된다., 즉, 현재 내 위치의 값만 비교하여 다르다면 뒤집어주는 방법이므로..