본문 바로가기

코딩 테스트48

[백준 11000번] 강의실 배정 문제 풀이 (with Python) 먼저 수업 시간을 입력한 후, 수업 시간 시작 시간으로 정렬을 해준다. heapq를 이용하면 입력 순서에 상관없이 오름차순으로 정렬해주므로, heapq에 수업 종료 시간을 넣고 비교하는 방식으로 구현했다. 즉, heapq[0] 은 배정된 강의실 중 가장 빨리 끝나는 시간으로 다음 수업시간과 비교하여 더 빨리 끝나면, 해당 수업을 heapq에서 빼고 다음 수업시간의 끝나는 시간을 넣음으로서 하나의 강의실을 이어서 사용한다. 반대로, 다음 수업 시간보다 늦게 끝나는 경우, 새로운 강의실을 배정해야 하므로, 다음 수업 시간의 끝나는 시간을 heapq에 넣어준다. import sys import heapq input = sys.stdin.readline .. 2023. 11. 4.
[백준 21609번] 상어 중학교 문제 풀이 먼저 문제를 이해해보자. 블록 그룹은 연결된 블록의 집합이다. 그룹에는 일반 블록이 적어도 하나 있어야 하며, 일반 블록의 색은 모두 같아야 한다. 검은색 블록은 포함되면 안 되고, 무지개 블록은 얼마나 들어있든 상관없다. 그룹에 속한 블록의 개수는 2보다 크거나 같아야 하며, 임의의 한 블록에서 그룹에 속한 인접한 칸으로 이동해서 그룹에 속한 다른 모든 칸으로 이동할 수 있어야 한다. 블록 그룹의 기준 블록은 무지개 블록이 아닌 블록 중에서 행의 번호가 가장 작은 블록, 그러한 블록이 여러개면 열의 번호가 가장 작은 블록이다. → 블록 그룹의 구성 블록 : 일반 블록 1개이상(단, 색은 모두 같아야 함) / 검은색 블록 X, 무지개 블록 개수 상관 없음 → 블록의.. 2023. 10. 29.
[백준 1082번] 방 번호 문제 풀이 (with Python) 처음 풀때는 구현 + 그리디 문제인줄 알았다. 그래서 방 번호와 가격을 하나의 튜플로 놓고 가격을 기준으로 정렬을 해야겠다고 생각했다. 그 다음 만들 수 있는 가장 긴 자릿수를 구해서, 그 자릿수에서 만들 수 있는 가장 큰 값을 구하는 방식으로 구현했다. 예시 입출력은 동일했으나, 계속 결과값이 틀렸다고 한다. 왜 틀렸는지 모르겠다... 두번째로 인터넷에서 코드를 참고해보았다. 알고보니 DP 문제로 수월하게 풀리는 문제였다. DP배열에 해당 돈으로 살 수 있는 방번호의 수 중 가장 큰 값을 저장하면 된다. - 실패 import sys input = sys.stdin.readline price = [] N = int(input()) P = list(.. 2023. 9. 25.
[백준 2212번] 센서 문제 풀이 문제가 이해되지 않아 계속 읽었다.. 결론적으로 센서는 같은 위치에 있을 수 있고, 센서의 수신 가능 영역이 0일 경우, 센서와 집중국의 위치를 같은 위치에 놓으면 된다. 따라서, 이 문제는 센서 사이의 거리를 가장 줄일 수 있도록 하면 수신 가능 영역의 합이 최소가 되므로, 센서 사이의 거리를 정렬한 뒤 가장 긴 거리를 K개 만큼 줄이면 된다. (K 개의 연결을 끊어주는 것!) import sys input = sys.stdin.readline n = int(input()) k = int(input()) sensor = list(map(int,input().split())) sensor.sort() dist = [] for i in range(n-1).. 2023. 9. 25.