반응형
밑의 링크는 백준에서의 문제 링크입니다.
파이썬 코드와 결과입니다.
# readline을 사용하기 위해 import합니다.
from sys import stdin
# 첫 줄은 일의 개수 n, 주어진 시간 T를 공백으로 구분해 입력합니다.
# 1 <= n <= 50
# 1 <= T <= 500
# 각각 정수형으로 변환합니다.
n, T = map(int, stdin.readline().split(' '))
# 두 번째 줄에는 n개의 100 이하인 각 일의 수행 시간을 공백으로 구분해 입력합니다.
# 각각 정수형으로 변환하고 리스트 변수에 넣어줍니다.
perform_time = list(map(int, stdin.readline().split(' ')))
# 1부터 일의 개수 n만큼 반복합니다.
for idx in range(1, n + 1):
# 일의 수행 시간의 현재 인덱스까지의 합이 주어진 시간 T보다 크다면
if sum(perform_time[:idx]) > T:
# 현재 인덱스에서 1을 빼준 값을 출력합니다.
print(idx - 1)
# 반복문을 탈출합니다.
break
# 주어진 시간 T 내에 모든 일을 완료할 수 있을 때,
# 즉, 일의 수행 시간의 인덱스 끝까지의 합이 주어진 시간 T보다 작거나 같다면
elif sum(perform_time[:idx]) <= T and idx == n:
# 현재 인덱스를 출력합니다.
print(idx)
첫 번째, 두 번째 제출에서는 도저히 왜 틀렸습니다 결과가 나오는지 몰랐습니다.
문제의 질문 검색에 들어가보니 주어진 시간 T 내에 모든 일을 완료할 수 있을 때,
결과가 똑바로 나오는지에 대한 답변을 달아준 분이 계셨습니다.
저도 혹시나 싶어 그런 경우에 결과가 똑바로 나오는지 테스트해보니, 결과가 제대로 나오지 않았습니다.
그래서 for문 내에 elif로 다른 조건을 더 달아주니 맞았습니다 결과를 볼 수 있었습니다.
그런데, 뭔가 코드가 깔끔하지 않은 느낌이 듭니다...
다른 사람들의 코드도 몇 개 더 읽어보고 공부해야겠습니다.
※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.
※ 더 효율적이고 빠른 정답을 환영합니다.
반응형
댓글