이번에는 Node.js 풀이가 없다...
이번 문제 덕분에 삽질을 또 엄청나게 했다.
본인은 처음에 Node.js로 먼저 풀고 c++로 푸는데 아무리 Node.js로 풀어도 메모리 초과
가 나길래 c++로 풀었다.
c++로 풀고나서 백준의 node.js 정답 코드를 확인했는데, 정답처리된 node.js 코드를 그대로 복붙해서 제출해도 메모리 초과
가 났다.
그냥 Node.js에 대한 메모리 할당을 백준에서 잘못한 것 같다...(사라진 내 시간..)
풀이 자체는 vector에 pair로 { 번호, 값 }을 두고 하나씩 꺼내서 풀었다.
항상 값은 맨 처음 값을 꺼냈고, vector 자체를 rotate 시켜서 값만큼 이동시켰다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N; cin >> N;
vector<pair<int, int>> V;
for (int i=0; i<N; i++) {
int num;
cin >> num;
V.push_back({ i+1, num });
}
int idx = 0;
while(!V.empty()) {
cout << V.front().first << " ";
int num = V.front().second;
V.erase(V.begin());
if (V.empty()) break;
if (num > 0) {
for (int i=0; i<num-1; i++) {
V.push_back(V.front());
V.erase(V.begin());
}
} else {
for (int i=0; i<-num; i++) {
V.insert(V.begin(), V.back());
V.erase(V.end() - 1);
}
}
}
return 0;
}
흑흑.. 덕분에 시간을 아낄 수 있었습니다. 감사합니다.