728x90
반응형
문제
분석
패턴을 찾기
처음에는 n 만큼 왼쪽 아래 대각선 방향으로 숫자를 채운다.
두번째는 n-1 만큼 아래를 채운다.
세번째는 n-2 만큼 왼쪽 위 대각선 방향으로 채운다.
처음부터 반복한다.
구현
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int map[10001][10001];
int dirx[3] = {1, 0, -1};
int diry[3] = {0, 1, -1};
void solve(int n);
vector<int> solution(int n) {
vector<int> answer;
solve(n);
for(int i = 0; i < n; i++){
for(int j = 0; j <= i; j++){
answer.push_back(map[i][j]);
}
}
return answer;
}
void solve(int n)
{
int num = 2;
int checkNum = 1;
int dir = 0;
int x = 0, y = 0;
map[0][0] = 1;
while( true ){
if(n-1 == 0){
break;
}
if( checkNum == n ){
n--;
checkNum = 0;
if( dir == 0 ){
dir = 1;
} else if( dir == 1 ){
dir = 2;
} else if( dir == 2) {
dir = 0;
}
}
x+=dirx[dir];
y+=diry[dir];
map[x][y] = num;
num++;
checkNum ++;
}
}
문제링크: https://programmers.co.kr/learn/courses/30/lessons/68645
728x90
반응형
'Algorithm > 프로그래머스 알고리즘' 카테고리의 다른 글
[프로그래머스] 다트게임 (0) | 2021.05.15 |
---|---|
[프로그래머스] 문자열 압축 (0) | 2021.05.15 |
[프로그래머스] 올바른 괄호 (0) | 2021.05.15 |
[프로그래머스] 기능개발 (0) | 2021.04.06 |
[프로그래머스]타일 장식물 (0) | 2020.06.27 |
댓글