코딩테스트

백준 1931

eunGI 2022. 1. 13. 00:35
n = int(input())
time = list()

for i in range(n):
     time.append(tuple(map(int, input().split())))

# time.sort(key=lambda x: x[0]) # x[0]으로 sort하고
# time.sort(key=lambda x: x[1]) # 그 상태에서 x[1]로 sort를 다시하니까 우선순위 높은건 x[1]이란 소리
# 위에 두줄로 sort 하는거랑 밑에 한줄로 sort하는게 같은 의미, 우선순위를 x[1]을 높게둠
time.sort(key=lambda x: (x[1], x[0])) # sort의 우선순위를 x[1], x[0] 순서대로 두겠다.

result = 0 # 정렬 후 첫번쨰 있는 항목은 최적의 해를 위해 무조건 들어가니까 초기값 1로
end_time = 0

for i in time:
    if end_time <= i[0]:
        end_time = i[1]
        result = result + 1

print(result)




# 5
# 6 7
# 6 6
# 5 6
# 5 5
# 7 7
# 반례, 끝나는 시간이 동일한 회의가 여러개 있을 경우 최적의 선택을 위해선 좀 더 일찍 시작하는 회의 (회의실을 효율적으로 사용)를 선택해야함

# 5
# 4 5
# 4 4
# 3 4
# 2 5
# 1 3
# 반례, sort할때 key 순서 중요!!!!!!! time.sort(key=lambda x: (x[0], x[1]))과 같이하면 종료시간 빠른순서대로 제대로 sort가 안됨

 

종료시간 기준 오름차순으로 정렬 후, 종료시간이 빠른 것 + 시간이 겹치지 않는 것을 매번 선택한다.

 

 

https://blog.naver.com/qpghnv/221597913108

 

https://sectumsempra.tistory.com/88

 


다양한 파이썬 언더바 사용법들 (https://gomguard.tistory.com/125)

1. 인터프리터에서 마지막 입력 값을 저장하고 싶을 때

2. 아무 의미없이 쓰고싶을때

3. 숫자, 문자의 자릿수 구분


2차원 배열 선언 - 2차원 배열은 사용하기 전에 저렇게 초기화?(선언?) 해줘야함


튜플은 리스트와 동일 그러나 다른점 3가지가 있음

 

1. 요소가 1개이면 마지막에 , 콤마를 붙여줘야함

a = (1,)

a = (1,2)

 

2. () 생략 가능

a = 1,

a = 1,2

 

3. 튜플 요소 변경 불가능

'코딩테스트' 카테고리의 다른 글

백준 2217  (0) 2022.01.14
백준 1026  (0) 2022.01.14
백준 11047  (0) 2022.01.12
백준 11399  (0) 2022.01.12
백준 2839번 - 언젠간 다시 한번 보기  (0) 2021.12.30