각 회의가 겹치지 않게 하면서 회의실 사용할 수 있는 회의의 최대 개수를 찾는다
회의종료시간
이 앞선 것부터 오름차순으로 정렬 후에, 회의시작시간
이 앞서도록 정렬
list.sort(key=lambda x:(x[1], x[0])
TypeError: 'str' object is not callable
import sys
input = sys.stdin.readline()
n = int(input())
input을 변수로 선언한 후 sys.stdin.readline()을 다시 할당했기 때문에 발생한 문제 Python에서 input은 기본적으로 사용자 입력을 받는 내장 함수, 이를 변수로 덮어쓰면 이후로는 input() 함수가 아닌 문자열 객체로 간주되어 TypeError
해결 꾀 쓰지 말고 그냥 int(sys.stdin.readline())
으로 사용하자
for _ in range(n):
table = list(map(int, sys.stdin.readline().split()))
최종 결과 table 변수는 반복문이 끝난 후 마지막 입력만 저장
table.append((list(map(int, sys,stdin.readline().split()))
을 통해 리스트들 이어서 받기로도 사용 가능하다.
table = [list(map(int, sys.stdin.readline().split()))for _ in range(n)]
요소 | 코드 1 | 코드 2 |
---|---|---|
데이터 저장 방식 | 반복문이 돌 때마다 table 에 덮어씀 | 모든 입력을 리스트로 저장 |
결과 형태 | 마지막 줄 입력만 저장 (list ) | 모든 줄을 포함하는 2차원 리스트 (list of lists ) |
사용 사례 | 하나의 데이터만 필요할 때 사용 | 여러 줄의 데이터를 모두 저장해야 할 때 사용 |
import sys
n = int(sys.stdin.readline())
# 2차원 배열로 저장
table = [list(map(int, sys.stdin.readline().split()))for _ in range(n)]
table.sort(key=lambda x: (x[1], x[0]))
print(table)
end = 0
cnt = 0
for x in table:
if x[0] >= end:
cnt += 1
end = x[1]
print(cnt)
sorting된 리스트에서 회의끝시간
이 이어지도록 end에 저장하고, cnt +=1
입력
11
1 4 / 3 5 / 0 6 / 5 7 / 3 8 / 5 9 / 6 10 / 8 11 / 8 12 / 2 13 / 12 14
print(table)
출력
[[1, 4], [3, 5], [0, 6], [5, 7], [3, 8], [5, 9], [6, 10], [8, 11], [8, 12], [2, 13], [12, 14]]