https://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
[난이도] level2
[유형] 구현
[풀이]
정삼각형이 아닌 직삼각형을 2차원 배열에 표시한다고 생각하면 편합니다.
삼각형의 안쪽으로 들어갈수록 삼각형은 변의 길이가 3씩 줄어들기 때문에 n부터 시작해서
변의 길이를 3씩 줄여가며 큰 삼각형에서 작은 삼격으로 배열에 표기를 해나갑니다.
y=1,x=1부터 시작해서 ↓ → ↖ 순으로 좌표를 움직여 가면서 숫자를 표기해주면 됩니다.
#include <string>
#include <vector>
using namespace std;
int map[1001][1001];
vector<int> solution(int n) {
vector<int> answer;
int y=1,x=1,k=0;
for(int i=n;i>=1;i-=3){
map[y][x]=++k;
for(int j=0;j<i-1;j++) map[++y][x]=++k;
for(int j=0;j<i-1;j++) map[y][++x]=++k;
for(int j=0;j<i-2;j++) map[--y][--x]=++k;
y++;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
answer.push_back(map[i][j]);
return answer;
}
https://github.com/has2/Problem-Solving/blob/master/programmers/level2/삼각 달팽이.cpp
'Problem-Solving > Programmers' 카테고리의 다른 글
[프로그래머스][level2] 이진 변환 반복하기 (C++) (0) | 2021.08.06 |
---|---|
[프로그래머스][level2] 2개 이하로 다른 비트 (C++) (0) | 2021.08.06 |
[프로그래머스][level2] 괄호 회전하기 (C++) (0) | 2021.08.06 |
[프로그래머스][level2] 후보키 (C++) (0) | 2021.08.06 |
[프로그래머스][level2] 순위 검색 (C++) (0) | 2021.08.06 |