코딩/공부

[Python] 백준 1931번 - 회의실 배정

취미니스트 2024. 3. 11. 20:50
728x90
반응형

문제

https://www.acmicpc.net/problem/1931

 

표준 입력 기능을 사용하기 위해 sys모듈 추가.

import sys

 

정수 하나를 입력.

정수 쌍을 저장하기 위한 리스트 생성.

입력받은 정수만큼 반복.

- 두 숫자를 하나의 쌍으로 하여 입력받음

- 두 숫자를 입력받아 리스트에 저장할 때 한 쌍의 숫자를 저장하는 리스트로 만들어 저장.

* 여기서 주의할 점은 두 숫자의 배치를 역순으로 (두 번째 정수, 첫 번째 정수) 저장함.

n = int(sys.stdin.readline())
data = []
for _ in range(n):
    start, end = map(int, sys.stdin.readline().split())
    data.append([end, start])

 

숫자 쌍을 저장하고 있는 리스트를 정렬함.

* 회의가 끝나는 시간을 기준으로 오름차순 정렬을 함(한 쌍의 숫자 중 두 번째 정수에 해당 => 0번째 인덱스에 저장).

* 회의가 끝나는 시간이 같은 경우 시작 시간을 기준으로 오름차순 정렬함(한 쌍의 숫자 중 첫 번째 정수에 해당 => 1번째 인덱스에 저장).

* python 정렬 관련 함수 및 메소드(sort, sorted)는 요소가 두 개 이상을 갖는 자료구조이면 앞 쪽(0번째 인덱스)부터 정렬 기준으로 하기 때문에 위의 코드에서 숫자 쌍을 저장할 때 배치를 바꿔 저장함.

data.sort()

 

개수 변수와 시간 변수를 생성.

숫자 쌍을 반복문을 이용하여 탐색.

- 만일 시작 시간이 현재 시간 이상이면 개수 증가 및 현재 시간을 종료 시간으로 저장.

개수 출력.

count = 0
t = 0
for d in data:
    if d[1] >= t:
        count += 1
        t = d[0]
print(count)

 

전체 코드.

import sys


n = int(sys.stdin.readline())
data = []
for _ in range(n):
    start, end = map(int, sys.stdin.readline().split())
    data.append([end, start])
data.sort()
count = 0
t = 0
for d in data:
    if d[1] >= t:
        count += 1
        t = d[0]
print(count)
728x90
반응형

'코딩 > 공부' 카테고리의 다른 글

[Python] 백준 11047번 - 동전 0  (0) 2024.03.12
[Python] 백준 11399번 - ATM  (0) 2024.03.11
[Python] 백준 2839번 - 설탕 배달  (0) 2024.03.11
[Python] 백준 5585번 - 거스름돈  (0) 2024.03.11
[Python] 백준 2798번 - 블랙잭  (1) 2024.02.13