굥뷰를 햡시댜
[Programmers] 기능개발 본문
https://programmers.co.kr/learn/courses/30/lessons/42586?language=python3
코딩테스트 연습 - 기능개발 | 프로그래머스
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇
programmers.co.kr
큐를 이용해 푸는 문제
C++로도 풀어보고
python3을 사용해서도 풀어봤다.
- 풀이 방법
1. 입력으로 들어오는 progresses, speeds에 대해 각각 큐를 만들고 큐에다가 값을 넣었다.
2. 한번씩 speeds를 다 더해준다.
3. 100이 넘는 값이 있을 경우 큐의 pop 원리를 이용해서 값을 빼준다.
(없을 경우 반복문 종료)
4. 답을 출력한다.
- C++ 풀이
#include <string>
#include <vector>
#include <queue>
using namespace std;
queue<int> p_q, s_q;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
for (int i = 0; i < progresses.size(); i++) {
p_q.push(progresses[i]);
s_q.push(speeds[i]);
}
while (1) {
if (p_q.empty()) break;
queue<int> temp, temp_speed;
int length = p_q.size();
for (int i = 0; i < length; i++) {
int p_front = p_q.front();
int s_front = s_q.front();
p_q.pop(), s_q.pop();
temp.push(p_front + s_front);
temp_speed.push(s_front);
}
int cnt = 0;
while (!temp.empty()) {
int temp_front = temp.front();
if (temp_front >= 100) {
cnt += 1;
temp.pop();
temp_speed.pop();
}
else break;
}
int len = temp.size();
for (int i = 0; i < len; i++) {
p_q.push(temp.front());
temp.pop();
s_q.push(temp_speed.front());
temp_speed.pop();
}
if(cnt != 0) answer.push_back(cnt);
}
return answer;
}
-python 풀이
from collections import deque
def solution(progresses, speeds):
answer = []
length = len(progresses)
dq_progresses = deque()
dq_speeds = deque()
for i in range(0, length):
dq_progresses.append(progresses[i])
dq_speeds.append(speeds[i])
while(True):
if(len(dq_progresses) == 0):
break
sum_len = len(dq_progresses)
for i in range(0, sum_len):
dq_progresses[i] += dq_speeds[i]
cnt = 0
while(True):
dq_len = len(dq_progresses)
if dq_len == 0:
break
if dq_progresses[0] >= 100:
cnt += 1
dq_progresses.popleft()
dq_speeds.popleft()
else:
break
if cnt != 0:
answer.append(cnt)
return answer
'알고리즘 문제 풀이 > Programmers 문제 풀이' 카테고리의 다른 글
[Programmers]다리를 지나는 트럭 (0) | 2019.12.26 |
---|---|
[Programmers] 주식가격 (0) | 2019.11.28 |
Comments