인프런 커뮤니티 질문&답변

Jiyoung Kang님의 프로필 이미지
Jiyoung Kang

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

5. 회의실 배정(그리디)

회의실 배정

해결된 질문

작성

·

332

0

n = int(input())
n_list = [list(map(int, input().split())) for _ in range(n)]

n_list.sort(key=lambda x: (x[1], x[0]))

cnt = 1
cur = n_list[0][1]

for i in range(n):
    if cur <= n_list[i][0]:
        cur = n_list[i][1]
        cnt += 1

print(cnt)

위 코드로 강사님이 제시해주신 케이스는 다 통과하는데,
동일한 문제임에도 백준 1931번은 틀렸습니다로 출력됩니다.

 

cnt=0, cur=0으로 고쳐서 해결하긴 했는데, 첫번째 회의는 무조건 회의실에 배정된다고 생각하는게 왜 틀린 생각인지 모르겠어서 질문 드리게 되었습니다.

 

감사합니다!

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

아래 코드처럼 for문을 1부터 돌려야 합니다.

n = int(input())
n_list = [list(map(int, input().split())) for _ in range(n)]

n_list.sort(key=lambda x: (x[1], x[0]))

cnt = 1
cur = n_list[0][1]

for i in range(1, n):
    if cur <= n_list[i][0]:
        cur = n_list[i][1]
        cnt += 1

print(cnt)

백준문제는 회의의 시작시간과 끝나는 시간이 같은 회의도 입력될 수 있다는 사실 때문입니다.

입력을

2

3 3

3 3

입력해 보세요. 답은 2입니다. 님 코드는 3이 나올겁니다.

Jiyoung Kang님의 프로필 이미지
Jiyoung Kang
질문자

감사합니다!!

Jiyoung Kang님의 프로필 이미지
Jiyoung Kang

작성한 질문수

질문하기