no image
[백준 11375번] 파이썬 - 열혈강호
백준 11375 - 열혈강호 시간 제한 2초, 메모리 제한 256MB # 조건 강호네 회사에는 직원이 N명이 있고, 해야할 일이 M개가 있다. 직원은 1번부터 N번까지 번호가 매겨져 있고, 일은 1번부터 M번까지 번호가 매겨져 있다. 각 직원은 한 개의 일만 할 수 있고, 각각의 일을 담당하는 사람은 1명이어야 한다. 0 각각의 직원이 할 수 있는 일의 목록이 주어졌을 때, M개의 일 중에서 최대 몇 개를 할 수 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 직원의 수 N과 일의 개수 M이 주어진다. (1 ≤ N, M ≤ 1,000) 둘째 줄부터 N개의 줄의 i번째 줄에는 i번 직원이 할 수 있는 일의 개수와 할 수 있는 일의 번호가 주어진다. 출력 첫째 줄에 강호네 회사에서 할 수 있는 일의 개..
2023.08.10
[백준 2110번] 파이썬 - 공유기 설치
백준 2110 - 공유기 설치 시간 제한 2초, 메모리 제한 128MB # 조건 도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다. 도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다. C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램을 작성하시오. 입력 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 ..
2023.08.10
[백준 11052번] 파이썬 - 카드 정렬하기
백준 1715 - 카드 정렬하기 시간 제한 2초, 메모리 제한 128MB # 조건 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장의 숫자 카드 묶음을 합치려면 50번의 비교가 필요하다. 매우 많은 숫자 카드 묶음이 책상 위에 놓여 있다. 이들을 두 묶음씩 골라 서로 합쳐나간다면, 고르는 순서에 따라서 비교 횟수가 매우 달라진다. 예를 들어 10장, 20장, 40장의 묶음이 있다면 10장과 20장을 합친 뒤, 합친 30장 묶음과 40장을 합친다면 (10 + 20) + (30 + 40) = 100번의 비교가 필요하다. 그러나 10장과 40장을 합친 뒤,..
2023.08.10
[백준 2188번] 파이썬 - 축사 배정
백준 2188 - 축사 배정 시간 제한 2초, 메모리 제한 128MB # 조건 농부 존은 소 축사를 완성하였다. 축사 환경을 쾌적하게 유지하기 위해서, 존은 축사를 M개의 칸으로 구분하고, 한 칸에는 최대 한 마리의 소만 들어가게 계획했다. 첫 주에는 소를 임의 배정해서 축사를 운영했으나, 곧 문제가 발생하게 되었다. 바로 소가 자신이 희망하는 몇 개의 축사 외에는 들어가기를 거부하는 것이다. 농부 존을 도와 최대한 많은 수의 소가 축사에 들어갈 수 있도록 하는 프로그램을 작성하시오. 축사의 번호는 1부터 M까지 매겨져 있다. 입력 첫째 줄에 소의 수 N과 축사의 수 M이 주어진다. (1 ≤ N, M ≤ 200) 둘째 줄부터 N개의 줄에는 각 소가 들어가기 원하는 축사에 대한 정보가 주어진다. i번째 소..
2023.08.09
no image
[Algorithm] 이분 매칭 (Bipartite Matching)
이분 매칭 A 집단이 B 집단을 선탁하는 방법에 대한 알고리즘 즉, 2개의 정점 그룹이 있을 때, 그룹에서 그룹으로 정점의 최대 매칭을 찾는 알고리즘이다. 위와 같은 두 그룹의 정점이 있을 때 각 그룹을 연결할 수 있는 간선의 정보는 아래와 같다. A : 2, 5 B : 2, 3, 4 C : 1, 5 D: 1, 2, 5 E : 2 이 정보를 가지고 정점을 한 번만 사용해서 최대한 많은 정점이 매칭되게 해보자. DFS와 visted 배열을 활용하여 구해준다. 우선 A가 매칭가능한 번호 중 빠른 번호인 2를 매칭 시켜준다. 이후 B를 매칭 시켜주는데 B가 연결할 수 있는 가장 빠른 번호도 2이므로 A로 돌아가 매칭 시킬 수 있는 다른 정점이 있는지 살펴본 후 존재한다면 A가 양보해준다. 따라서, A - 5,..
2023.08.09
[백준 1348번] 파이썬 - 주차장
백준 1348 - 주차장 시간 제한 1초, 메모리 제한 256MB # 조건 세준 주차장은 R×C크기의 직사각형 모양이다. 세준 주차장에는 N개의 차와, M개의 주차 구역이 있다. 그리고, 모든 차는 주차 구역에 주차하려고 한다. 교통 제한 때문에, 차는 주차장의 경계와 평행하게만 움직일 수 있고, 모든 차는 1초에 한 칸씩 움직일 수 있다. 보통 모든 차는 현재 위치에서 가장 가까운 위치에 있는 주차 구역에 주차를 하려고 한다. 하지만, 다음과 같이 생긴 주차장이라면 현재 위치에서 가장 가까운 위치에 주차하는 것이 비효율적이다. .C.....P.X... XX.......X..P XX.....C..... ‘C’는 차이고, 'P‘는 주차 구역, 'X'는 벽이고, '.'은 ..
2023.08.09
[백준 11052번] 파이썬 - 카드 구매하기
[백준 11052 - 카드 구매하기](https://www.acmicpc.net/problem/11052 시간 제한 1초, 메모리 제한 256MB # 조건 요즘 민규네 동네에서는 스타트링크에서 만든 PS카드를 모으는 것이 유행이다. PS카드는 PS(Problem Solving) 분야에서 유명한 사람들의 아이디어와 얼굴이 적혀있는 카드이다. 각각의 카드에는 등급을 나타내는 색이 칠해져 있고, 다음과 같은 8가지가 있다. 전설카드, 레드카드, 오렌지카드, 퍼플카드, 블루카드, 청록카드, 그린카드, 그레이카드 카드는 카드팩의 형태로만 구매할 수 있고, 카드팩의 종류는 카드 1개가 포함된 카드팩, 카드 2개가 포함된 카드팩, ... 카드 N개가 포함된 카드팩과 같이 총 N가지가 존재한다. 민규는 카드의 개수가 ..
2023.08.09
no image
[백준 1309번] 파이썬 - 동물원
백준 1309 - 동물원 시간 제한 2초, 메모리 제한 128MB # 조건 어떤 동물원에 가로로 두칸 세로로 N칸인 아래와 같은 우리가 있다. 이 동물원에는 사자들이 살고 있는데 사자들을 우리에 가둘 때, 가로로도 세로로도 붙어 있게 배치할 수는 없다. 이 동물원 조련사는 사자들의 배치 문제 때문에 골머리를 앓고 있다. 동물원 조련사의 머리가 아프지 않도록 우리가 2N 배열에 사자를 배치하는 경우의 수가 몇 가지인지를 알아내는 프로그램을 작성해 주도록 하자. 사자를 한 마리도 배치하지 않는 경우도 하나의 경우의 수로 친다고 가정한다. 입력 첫째 줄에 우리의 크기 N(1 1 + 4 + 2가 된다. 즉, 새로운 우리 한 줄을 추가하게 되면 더해지는 경우의 수는 사자를 놓는 경우와 사자를 놓지 않는 경우로 나..
2023.08.08
no image
[백준 2632번] 파이썬 - 피자판매
백준 2632 - 피자판매 시간 제한 2초, 메모리 제한 128MB # 조건 고객이 두 종류의 피자 A와 B를 취급하는 피자가게에서 피자를 주문하고자 한다. 과 같이 각 종류의 피자는 다양한 크기의 여러 개의 피자조각으로 나누어져 있다. 각 조각에 쓰여진 숫자는 피자조각의 크기를 나타낸다. 고객이 원하는 피자의 크기를 이야기하면, 피자가게에서는 한 종류의 피자를 2 조각 이상 판매할 때는 반드시 연속된 조각들을 잘라서 판매한다. 이때 판매한 피자조각의 크기 합이 주문한 크기가 되어야 한다. 판매한 피자조각은 모두 A종류이거나, 모두 B종류이거나, 또는 A와 B 종류가 혼합될 수 있다. 예를 들어서, 과 같이 잘라진 피자가 있을 때, 손님이 전체 크기가 7 인 피자를 주문하면, 피자 가게에서는 와 같이 5..
2023.08.08