반응형
https://programmers.co.kr/learn/courses/30/lessons/68645
글쓴이의 답
개인적인 풀이 임으로
이것보다 더 좋은 알고리즘은 많음...
이렇게도 풀이하는구나.. 공유하기 위해 올림...
#include <string>
#include <vector>
#include <stdio.h>
using namespace std;
vector<int> solution(int n) {
vector<int> answer;
vector<vector<int>> result;
int total = 0;
for (int i = 0; i < n; i++) {
total += i + 1;
vector<int> temp;
result.push_back(temp);
}
int location = 1;
int upCount = 0;
int downCount = -1;
bool MorP = true;
int start = 1;
int end = n;
bool checkEnd = true;
bool checkStart = true;
for (int i = 1; i <= total; i++) {
if ((end == location) && (checkEnd == true)) {
if (result[location - 1].size() > 1) {
vector<int>::iterator it = result[location - 1].end();
result[location - 1].insert(it - upCount, i);
}
else {
result[location - 1].push_back(i);
}
}
else {
if (true == MorP){
if (result[location - 1].size() > 1) {
vector<int>::iterator it = result[location - 1].begin();
result[location - 1].insert(it + downCount, i);
}
else {
result[location - 1].push_back(i);
}
}
else {
if (result[location - 1].size() > 1) {
vector<int>::iterator it = result[location - 1].end();
result[location - 1].insert(it - (upCount-1), i);
}
else {
result[location - 1].push_back(i);
}
}
}
if ((end == location) && (checkEnd == true)) {
if (result[location-1][0] > result[location - 1].size()) {
continue;
}
else {
MorP = false;
end--;
checkEnd = false;
checkStart = true;
upCount++;
}
}
else if( ((start == location) && (checkStart == true)) || (result[location - 1][0] == result[location - 1].size())) {
if ((start == location) && (checkStart == true)) {
downCount++;
}
MorP = true;
checkEnd = true;
checkStart = false;
start++;
}
if (true == MorP) {
location++;
}
else {
location--;
}
}
for(vector<int> temp : result){
answer.insert(answer.end(), temp.begin(), temp.end());
}
return answer;
}
꾸준히 하다보면 실력이 늘겠지..
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스][C++] 주식가격 (0) | 2022.04.15 |
---|---|
[프로그래머스][C++] 영어 끝말잇기 (0) | 2022.04.15 |
[프로그래머스][C++] [1차] 2개 이하로 다른 비트 (0) | 2022.04.15 |
[프로그래머스][C++] [1차] 프렌즈4블록 (0) | 2022.04.15 |
[프로그래머스][C++] 피로도 (2) | 2022.04.15 |