728x90
SMALL
백준 문제 풀이: 10409 (서버)
문제 링크: https://www.acmicpc.net/problem/10409
문제 설명:
서버는 최대 T
시간 동안 작업을 수행할 수 있습니다.
n
개의 작업의 수행 시간들이 주어질 때, 최대 몇 개의 작업을 처리할 수 있는지 구하세요.
서버는 작업들을 앞에서부터 순서대로 처리하며, 시간이 초과되면 더 이상 작업을 수행하지 않습니다.
문제 해결 코드
#include <iostream>
using namespace std;
int arr[51]; // 작업 수행 시간을 저장할 배열
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n, T; // n: 작업 개수, T: 서버가 처리할 수 있는 최대 시간
cin >> n >> T;
for (int i = 0; i < n; i++) {
cin >> arr[i]; // 각 작업의 수행 시간 입력
}
int s = 0; // 누적된 작업 시간
int ans = 0; // 처리된 작업 수
for (int i = 0; i < n; i++) {
s += arr[i]; // 작업 시간 누적
if (s > T) break; // 누적 시간이 최대 시간을 초과하면 중단
ans++; // 처리된 작업 수 증가
}
cout << ans << '\n'; // 최대 처리된 작업 수 출력
return 0;
}
코드 설명
코드의 주요 로직과 사용된 알고리즘 설명:
- 입력 처리:
-
n
: 작업의 개수 -T
: 서버가 처리할 수 있는 최대 시간 - 각 작업의 수행 시간을arr
에 저장합니다. - 시간 누적 계산:
-
s
를 사용해 작업 시간의 합을 누적합니다. - 종료 조건:
- 누적 시간이
T
를 초과하면 루프를 종료합니다. - 결과 출력:
-
ans
: 처리된 작업의 수를 출력합니다.
세부 구현:
s += arr[i]
: 작업 시간 누적if (s > T)
: 최대 시간을 초과하면 반복문 종료
시간 복잡도 분석
- 입력 작업의 개수
n
에 대해, 배열을 한 번 순회하므로 시간 복잡도는 **O(n)**입니다.
결과
서버가 최대 T
시간 동안 처리할 수 있는 작업의 수를 정확히 출력합니다.
- 입력 예시:
4 10 4 3 2 5
- 출력 예시:
3
다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!
728x90
LIST
'BAEKJOON > 수학' 카테고리의 다른 글
백준 11320번 [삼각 무늬 - 1](C++) -yes6686- 티스토리 (0) | 2024.07.14 |
---|---|
백준 2721번 [삼각수의 합](C++) -yes6686- 티스토리 (0) | 2024.07.13 |
백준 10419번 [지각](C++) -yes6686- 티스토리 (0) | 2024.07.04 |
백준 15873번 [공백 없는 A+B](C++) -yes6686- 티스토리 (0) | 2024.06.29 |
백준 4880번 [다음수](C++) -yes6686- 티스토리 (0) | 2024.05.17 |