-
[CodeTree/Python] 개발자의 컴퓨터Solve 2024. 6. 25. 09:10
문제
더보기개발자의 컴퓨터
N명의 개발자가 시간 s 부터 t 까지 b개의 컴퓨터를 사용하려고 할 때, 모든 개발자가 무리없이 일을 하기 위해 필요한 컴퓨터의 최소 개수를 구하는 프로그램을 작성해보세요.
입력 형식
첫 번째 줄에 정수 N이 주어집니다.
두 번째 줄부터는 N개의 줄에 걸쳐 각 줄마다 s, t, b가 공백을 사이에 두고 주어집니다. 입력으로 주어지는 모든 s, t 끼리는 서로 값이 다름을 가정해도 좋습니다.
- 1 ≤ N ≤ 100
- 1 ≤ s < t ≤ 1000
- 1 ≤ b ≤ 10
출력 형식
첫 번째 줄에 모든 개발자가 성공적으로 일을 끝내기 위해 필요한 최소 컴퓨터의 수를 출력합니다.
풀이
from collections import defaultdict n = int(input()) li = [list(map(int, input().split())) for _ in range(n)] # print(li) count = defaultdict(int) for i in range(n): start = li[i][0] length = li[i][1] - li[i][0] computer = li[i][2] for j in range(length): count[start + j] += computer # print(count) print(max(count.values()))
딕셔너리를 활용해서 풀었다. 시간마다 전부 받아서 입력해주기 귀찮아서 유사 딕셔너리를 생성해서 받아줬다.
이거 유용한 것 같아서 날 잡고 한 번 게시글로 정리해서 익혀두면 좋을 듯? 딕셔너리는 쓸 때마다 헷갈린다..
- 시간별로 컴퓨터의 대수를 출력할 count 딕셔너리를 생성한다.
- 시간, 컴퓨터 대수를 2차원 배열로 입력받아 연산할 건데,
시간은 중복되지 않고 s < t 조건이 있으므로 그냥 반복문을 돌면서 단순 연산했다. - 사용 길이(length)은 t - s로 처리했고, 시간 딕셔너리의 시작 시간(s)부터 길이 구간만큼의 인덱스 전부에 컴퓨터 대수만큼 value를 더해줬다.
딕셔너리 간단한 정리
1. 기본 표현: 딕셔너리명[key]
2. 메소드 활용
- 딕셔너리명[key] = value
- 딕셔너리명.get(key, //default//)
- .pop(key)
- .clear()
- .keys()
- .values()
- .items()'Solve' 카테고리의 다른 글
[CodeTree/Python] 용량이 다른 3개의 물통 (0) 2024.06.26 [CodeTree/Python] n * m 표 이동 7 (미해결) (0) 2024.06.25 [CodeTree/Python] Cycle (0) 2024.06.25 [CodeTree/Python] 화면에 출력 (0) 2024.06.17 [CodeTree/Python] 확산4 (0) 2024.06.17