programmers.co.kr/learn/courses/30/lessons/68645
코딩테스트 연습 - 삼각 달팽이
5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11]
programmers.co.kr
풀이
1. 밖에서부터 안으로 채워가는 순서를 얌전히 따랐다
2. n의 크기, 밖에서부터 몇번째 겹인지, 젤 위 꼭지점의 index 이렇게 3개를 관리
3. while문 써서 입력쓰
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int n) {
vector<int> answer;
vector<vector<int> > v(n+1);//1~n까지 쓰게
int index=0;//몇번째 겹
int start=1; // 꼭대기점
int k=1;//실제 삽입
int new_n =n;
while(true)
{
if(new_n<=0)
break;
for(int i=0;i<new_n;i++)
v[start+i].insert(v[start+i].begin()+index,k++);//왼쪾
for(int i=0;i<new_n-1;i++)
{
v[n-index].insert(v[n-index].begin()+index+i+1,k++);//바닥
}
for(int i= new_n-2;i>0;i--)//오른쪽
{
v[start+i].insert(v[start+i].end()-index ,k++);
}
index++;
start +=2;
new_n = new_n-3;
}
for(int i=1;i<=n;i++)
{
for(int k=0;k<v[i].size();k++)
answer.push_back(v[i][k]);
}
return answer;
}
'c++ > 프로그래머스' 카테고리의 다른 글
프로그래머스 : 베스트앨범 C++ (0) | 2020.10.27 |
---|---|
프로그래머스 : 풍선 터트리기 C++ (0) | 2020.09.26 |
프로그래머스 : 숫자게임 C++ (0) | 2020.09.26 |
프로그래머스 : 짝지어 제거하기 level 2 C++ (0) | 2020.09.20 |
프로그래머스 : 스킬트리 level 2 C++ (0) | 2020.09.12 |