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
- 프론트엔드 스쿨
- 서버
- 제로베이스
- Server
- map
- 알고리즘
- 완전탐색
- 백트래킹
- N과 M(2)
- 자바스크립트
- React
- MemoryBarrier
- 문자열&연산자
- 멀티스레드
- C++
- 구현
- socket
- Algorithm
- 코딩테스트 스터디
- 제로베이스 프론트엔드 스쿨
- c#
- leetcode
- 코딩테스트
- 백준
- 프로그래머스
- 구조체
- 메모리 배리어
- JavaScript
- dfs
- BFS
Archives
- Today
- Total
Written
프로그래머스 레벨2 <택배상자> C++ 풀이 본문
두개의 컨테이너 벨트를 사용해서 주어진 order에 맞게 택배를 담을 수 있게 하는 것이 문제 해결의 요지였습니다. 서브 컨테이너가 마치 자료구조의 Stack과도 같은 구조를 하고 있기 때문에 두 개의 vector를 통해 어렵지 않게 해결이 가능한 문제였습니다.
하나 주의해야할 부분은 서브 컨테이너에 옮기다가 order에 맞게 택배 상자를 실은 다음에, 다음 차례로 실어야 하는 박스 번호가 서브 컨테이너와 메인 컨테이너에서 곧 장 꺼낼 수 없다고 하더라도 더 실을 수 있는 경우가 존재하는 것 입니다.
메인컨테이너가 비어있는게 아니라면 서브컨테이너에 다시 옮기면서 이번에 실어야 하는 박스번호를 찾아서 옮길 수 있는 경우가 존재합니다. 처음 풀이에는 저도 문제에 나와있는 테스트케이스만 보고 그대로 구현하다보니 이부분을 놓쳤지만, 채점에서 틀리는 테케가 많은것을 보고 다시 풀면서 정답을 받을 수 있었습니다. (answer가 1로 시작하는 이유는 어떤 경우라도 무조건 하나의 택배상자는 실을 수 있기 때문)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> order) {
int answer = 1;
vector<int> sub;
vector<int> main; // 3 1 2 5 4
int start = order[0];
for (int i=order.size();i>=1;i--)
{
main.push_back(i);
}
for (int i=1;i<start;i++)
{
sub.push_back(i);
main.pop_back();
}
int idx = 1;
main.pop_back();
//다시 왔다갔다 하는 과정이 안들어있음.
// main 2 3 4 5
// sub
// box 1 3
while(true)
{
int cur = order[idx];
bool flag = false;
if (main.size() != 0 && cur == main[main.size()-1])
{
answer++;
idx++;
flag = true;
main.pop_back();
continue;
}
if (sub.size() != 0 && cur == sub[sub.size()-1])
{
answer++;
idx++;
flag = true;
sub.pop_back();
continue;
}
if (main.size() != 0 && cur != main[main.size()-1])
{
int tmp = main[main.size()-1];
main.pop_back();
sub.push_back(tmp);
continue;
}
if (flag==false)
break;
}
return answer;
}
|
cs |
'알고리즘 문제풀이' 카테고리의 다른 글
프로그래머스 레벨2 <할인 행사> C++ 풀이 (2) | 2023.09.08 |
---|---|
프로그래머스 레벨2 <혼자 놀기의 달인> C++ 풀이 (0) | 2023.09.06 |
프로그래머스 / 롤케이크 자르기 / C++ (0) | 2023.09.04 |
프로그래머스 / 귤 고르기 / C++ (0) | 2023.09.01 |
프로그래머스 / 디펜스 게임 / C++ (0) | 2023.09.01 |
Comments