본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Bronze 3][Python] 10409번 : 서버

by 빛밤하늘 2021. 6. 18.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

10409번: 서버

당신은 FCFS(First-Come, First-Served)의 규칙에 따라 요청된 일을 처리하는 서버를 담당하게 되었다. 매일, 당신은 일을 처리하기 위해 최대 T분 동안 서버에 시간을 할당할 수 있다. 당신은 오늘 주어

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# 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로 다른 조건을 더 달아주니 맞았습니다 결과를 볼 수 있었습니다.

 

그런데, 뭔가 코드가 깔끔하지 않은 느낌이 듭니다...

다른 사람들의 코드도 몇 개 더 읽어보고 공부해야겠습니다.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글