일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- react native typescript
- CSS
- node
- react native typescript navigate
- 스탠실 버퍼 사용
- 스탠실 버퍼 시작
- cyworld
- 리액트 네이티브 설치 오류
- node.js
- react native mac
- react native ios 기기 연결
- react-native
- c++ using
- react native
- GitHub
- react native 타입스크립트
- react native accessible
- 싸이월드
- Expo
- react native typescript navigation
- react
- 벡터와 리스트의 차이
- 스탠실 버퍼 튜토리얼
- c++ 정보은닉
- C++
- javascript
- stencil buffer
- 리액트 네이티브 맥
- unity stencil buffer
- html
Archives
- Today
- Total
혀니의 이거저거 뿌시기
[C++]프로그래머스 다리를 지나는 트럭 본문
728x90
코딩테스트 연습 - 다리를 지나는 트럭 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <string>
#include <vector>
#include <iostream>
#include <queue>
using namespace std;
int solution(int bridge_length, int weight, vector<int> truck_weights) {
int answer = 0;
int temp = 0;
queue<int> que;
int i = 0;
while(i < truck_weights.size())
{
if(temp + truck_weights[i] <= weight)
{
if(que.size() == bridge_length)
{
temp -= que.front();
que.pop();
}
que.push(truck_weights[i]);
temp += truck_weights[i];
i++;
}
else
{
if(que.size() < bridge_length)
que.push(0);
else
{
temp -= que.front();
que.pop();
if(temp+truck_weights[i] > weight)
que.push(0);
else
{
que.push(truck_weights[i]);
temp += truck_weights[i];
i++;
}
}
}
answer++;
}
answer += bridge_length;
return answer;
}
풀이 방법
선입 선출인 queue를 이용해서 풀었어야 하는 문제였다. 트럭이 지나가는 다리는 선입선출 구조이기 때문이다.
트리를 계속해서 queue에 push하면서 매 시행마다 temp로 queue에 쌓인 값을 갱신하고,
temp가 weight보다 클 경우 queue에 0을 push한다.
queue의 size가 bridge_length가 될 경우 queue에서 pop을 해주며, 그와 동시에 temp도 pop한 값만큼 빼며 갱신한다.
매 실행마다 queue의 총합인 temp가 조건에 만족하는지 보며, push할 수 있을때는 주어진 truck_weights의 인덱스를 증가시켜 새로운 값을 push해주고 아닐 때는 0을 넣어준다.
만약 인덱스가 마지막 값이 됐을 경우엔 마지막 bridge길이만큼 건너면 되므로 마지막으로 더해준다. 끝!
queue의 자료구조의 쓰임을 정확히 알고 있으면 풀기 수월했을 문제.
728x90
'알고리즘 공부(C++)' 카테고리의 다른 글
[C++]프로그래머스 튜플 (0) | 2023.10.24 |
---|---|
[C++]프로그래머스 양궁대회 (0) | 2023.10.10 |
[C++] 프로그래머스 광물 캐기 (2) | 2023.10.09 |
[C++]프로그래머스 여행경로 (0) | 2023.09.24 |
[C++]프로그래머스 부대복귀 (0) | 2023.09.20 |