728x90
내 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int* solution(int n) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
int* answer = (int*)calloc(n * (n+1) / 2, sizeof(int));
int index = 0; // 인덱스 값
int count = 0; // 핸들링할 값, 배열간 간격조절
int handle = 0; // 진행방향
int value = 1 // 삽입할 값
for(int i = 0; i < n; i++)
{
for(int j = i; j < n; j++)
{
if(handle == 0)
{
index += count;
count++;
answer[index] = value;
value++;
}
else if(handle == 1)
{
++index;
answer[index] = value;
value++;
}
else if(handle == 2)
{
index -= count;
count--;
answer[index] = value;
value++;
}
}
handle++;
if(handle == 3) handle = 0;
}
return answer;
}
한 수 배울 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int* solution(int n) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
int* answer = (int*)calloc(n * (n+1) / 2, sizeof(int));
int state = 0, index = 0, count = 1;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n - i; j++) {
if(state%3 == 0) {
index = index - state/3 + i + j;
} else if (state%3 == 1){
index++;
} else {
index = index - n + state/3 + j;
}
answer[index] = count++;
}
state++;
}
return answer;
}
- 깔끔하다. 내 코드에서 불필요한 부분을 잘 축약한 코드같은 느낌.
- 상태를 3가지 케이스로 나누는 것 까지는 같음.
- 인덱스 값을 정하는 방식 말고는 대개 비슷한듯.
어려웠다. 거의 2시간 가까이 푼듯.. C도 안쓰다 쓰려니 힘들다. 기초부터 다시
내 C언어로는 Level.2부터 천천히 문제를 풀어봐야 할듯..
'Algorism(PS) > 프로그래머스' 카테고리의 다른 글
[C] LV.2 주식가격 (0) | 2021.11.10 |
---|---|
[C] LV.1 없는 숫자 더하기 (8) | 2021.11.03 |
[C] LV.1 문자열을 정수로 바꾸기 (0) | 2021.11.03 |