반응형
포인트
- 구현을 잘 할 수 있는가를 초점에 맞춘다.
- 급하게 구하려고 하지 말자 생각을 하고 자연스럽게
🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다.
c++/cpp
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
vector<int> days;
for (int i = 0; i < progresses.size(); i++) {
int temp = 100 - progresses[i];
int cnt = 0;
while (temp > 0) {
temp -= speeds[i];
cnt++;
}
days.push_back(cnt); // 몇일 남았는지 배열에 넣어 준다.
// 7 3 9
}
for (int i = 1; i < days.size(); i++) {
days[i] = max(days[i], days[i-1]);
// 7 7 9
}
int answer_count = 1;
for (int i = 1; i < days.size(); i++) {
if (days[i] == days[i - 1]) {
answer_count++;
} else {
answer.push_back(answer_count);
answer_count = 1;
}
}
answer.push_back(answer_count);
return answer;
}
python
def solution(progresses: list, speeds: list) -> list:
progresses = list(map(lambda x: 100 - x, progresses))
answer = []
days = []
for progress, speed in zip(progresses, speeds):
day = progress // speed
if progress % speed != 0:
day += 1
days.append(day)
# 남아있는 날짜 계산
while days:
days = list(map(lambda x: x - 1, days))
if days[0] == 0: # 앞에가 0이면 0까지 계산
cnt = 0
for ele in days:
if ele <= 0:
cnt += 1
else:
break # 0이 아니면 끊고
days = days[cnt:] # days 업데이트 한다.
answer.append(cnt)
return answer
print(solution([95, 90, 99, 99, 80, 99], [1, 1, 1, 1, 1, 1]))
print(solution([93, 30, 55], [1, 30, 5]))
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘] cpp 소수 찾기 (0) | 2020.09.23 |
---|---|
[알고리즘] c++ cpp 카카오 프렌즈 컬러링 북 (0) | 2020.09.23 |
[알고리즘] 프린터 (0) | 2020.09.23 |
[알고리즘] c++ cpp java 주식가격 (0) | 2020.09.23 |
[알고리즘] cpp 멀쩡한 사각형 (0) | 2020.09.23 |
댓글