1. 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 소스코드
1회차
- 왜 문제 분류가 Stack/Queue인지 잘모르겠다. 그래서 그냥 while문, for문 반복문으로 vector를 순회함.
- 예상 시간 복잡도
(1) while 문 : 최악의 경우 맨 앞의 작업이 0에서 +1씩, 총 100회
(2 - 1) speed 더하기 : O(N)
(2 - 2) 조건 충족 확인 : O(N)
(1) x ( (2-1) + (2-2) ) = O(N)
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> prog, vector<int> speeds) {
vector<int> answer;
int re = 0;
while (re < prog.size()) {
for (int i = 0; i < prog.size(); i++) {
if (prog[i] < 100 and prog[i] != -1) {
prog[i] += speeds[i];
}
}
int cnt = 0;
for (int i = 0; i < prog.size(); i++) {
if (prog[i] < 100) continue;
if (i == 0 or (i != 0 and prog[i - 1] == -1)) {
prog[i] = -1;
cnt++;
}
}
if (cnt) {
answer.push_back(cnt);
re += cnt;
}
}
return answer;
}
2회차
- 반복문 한번으로 끝나는 코드
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> prog, vector<int> speeds) {
vector<int> answer;
int maxDay = 0;
for (int i = 0; i < prog.size(); i++) {
int day = (99 - prog[i]) / speeds[i] + 1;
if (answer.empty() || day > maxDay)
answer.push_back(1);
else
answer.back()++;
if (day > maxDay) maxDay = day;
}
return answer;
}
'알고리즘 > BOJ(백준)' 카테고리의 다른 글
[ 프로그래머스-lv2 / 진법변환 ] 124 나라의 숫자 (0) | 2020.04.10 |
---|---|
[ 프로그래머스-lv2 / 완전탐색 ] 소수 찾기 (0) | 2020.04.09 |
[ 프로그래머스-Lv1 / 해쉬 ] 완주하지 못한 선수 (0) | 2020.04.03 |
[ 프로그래머스-Lv1 ] 실패율 (0) | 2020.04.03 |
[ 프로그래머스-Lv1 / 비트연산 ] [1차]비밀지도 (0) | 2020.04.03 |