반응형
programmers.co.kr/learn/courses/30/lessons/68645?language=c
Solution
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#include <stdio.h>
int dx[3] = { 0, 1, -1 };
int dy[3] = { 1, 0, -1 };
int a[1000][1000];
int* solution(int n) {
int len = n * (n + 1) / 2;
int* answer = (int*)calloc(len, sizeof(int));
int dir = 0, cnt = 1;
int ty = 0, tx = 0;
while (1) {
a[ty][tx] = cnt++;
if (cnt > len) break;
if (ty + dy[dir] == n || ty + dy[dir] < 0 ||
tx + dx[dir] == n || tx + dx[dir] < 0 ||
a[ty + dy[dir]][tx + dx[dir]] != 0) {
dir = (++dir) % 3;
}
ty += dy[dir];
tx += dx[dir];
}
int idx = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n && a[i][j]!=0; j++) {
answer[idx++] = a[i][j];
}
}
return answer;
}
|
cs |
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - [Level 2]코딩테스트 연습 > 정렬 > H-Index (2) | 2021.04.03 |
---|---|
프로그래머스 - [Level 2]코딩테스트 연습 > 정렬 > 가장 큰 수 (0) | 2021.03.28 |
프로그래머스 - [Level 1]코딩테스트 연습 > 정렬 > K번째수 (0) | 2021.03.27 |