반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 이분탐색
- 소프티어
- 오퍼레터
- 파라메트릭
- incr
- 성적평가
- @P0
- 6987
- Kafka
- dfs
- BFS
- msSQL
- 13908
- 처우산정
- softeer
- 매개변수탐색
- 처우협의
- 퇴사통보
- 기술면접
- boj #19237 #어른 상어
- BOJ
- compose
- 백준
- 경력
- Docker
- 백트래킹
- upper_bound
- 물채우기
- OFFSET
- 연결요소
Archives
- Today
- Total
기술 블로그
13335번 트럭 본문
728x90
반응형
https://www.acmicpc.net/problem/13335
처음에는 Greedy 문제인줄 알았다.
로직 순서 호출만 조심하면 되고, 나머지는 구현이다.
1. 한 칸 씩 이동 → 트럭 제거 → 새로운 트럭 추가 순서로 호출
2. 무게 총 합에서 제거한 트럭의 무게를 뺄 때, v.erase(itr)를 나중에 해준다. 먼저하면, itr이 자동 증가하기 때문에 그 다음 원소(트럭)의 무게가 빼진다.
3. 새로운 트럭을 추가할 때, index와 현재 다리에 올라가 있는 트럭들의 무게 총합(total_weight)를 올라갈 트럭의 무게까지 고려하여 if 조건문을 잘 따진다.
#include <bits/stdc++.h>
using namespace std;
#define MAX 1010
// https://www.acmicpc.net/problem/13335
int a[MAX];
int n, w, L;
/*
* w : 다리 길이
* L : 다리의 최대 하중
*/
int simulation() {
int t = 0;
vector<pair<int, int> > bridge; // 다리
int total_weight = 0; // 다리에 올라가있는 트럭들의 무게 총 합
int index = 0; // 현재 트럭의 순서(인덱스)
while (true)
{
// 한 칸 이동
if (!bridge.empty()) {
for (auto& i : bridge) {
i.second += 1;
}
}
// 다리 지나간 트럭 제거(새로운 트럭을 추가하는 로직보다 먼저 와야한다.)
// 그래야, bridge.empty()라면, break 할 수 있다.
while (!bridge.empty())
{
auto itr = bridge.begin();
if (itr->second == w) {
total_weight -= itr->first; // 무게 총합에서 뺀다. ★순서주의 : 계산부터 먼저 한 후, erase 해야함.
bridge.erase(itr); // 다리에 올라가 있는 맨 앞 트럭 제거
}
else {
break;
}
}
// 새로운 트럭 추가
if (index < n && bridge.size() + 1 <= w && total_weight + a[index] <= L) {
bridge.push_back({ a[index], 0 });
total_weight += a[index++];
}
// 시간 경과
++t;
// 탈출
if (bridge.empty()) {
break;
}
}
return t;
}
int main()
{
cin.tie(0);
scanf("%d %d %d", &n, &w, &L);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
printf("%d\n", simulation());
return 0;
}
728x90
반응형
'알고리즘 문제 > BOJ' 카테고리의 다른 글
16932번 모양 만들기 (0) | 2023.05.01 |
---|---|
17472번 다리 만들기 2 (0) | 2022.07.17 |
18430번 무기 공학 (0) | 2022.05.04 |
2138번 전구와 스위치 (0) | 2022.05.03 |
17471번 게리맨더링 (0) | 2022.04.27 |