반응형
출처: http://www.hancom.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=914&sca=2020
Approach
① 홀수번째 줄은 윗줄에서 +1 처리 후, 값을 증가시키며 출력(해당 줄을 출력 후 마지막에는 감소시킵니다.)
짝수번째 줄은 해당 i번째 줄의 전체 개수(= i)개를 시작으로 감소시키면서 출력
② 숫자 앞쪽에 공백 출력에 유의
첫번째 줄에 출력되는 0의 개수는 2 * N - 1이며, 그 다음 줄부터는 -2씩 감소됩니다.
③ 각 줄마다 [1, end]까지 숫자를 출력하며, end의 범위를 조정합니다.
N / 2 +1 줄까지는 각 줄에 출력되는 개수가 증가하다가 그 이후부터는 다시 감소합니다.
#include <stdio.h>
int N, M;
int main() {
// freopen("input.txt", "r", stdin);
scanf("%d %d", &N, &M);
if (N <= 0 || N > 100 || M <= 0 || M > 3 || N % 2 == 0) {
printf("INPUT ERROR!\n");
return 0;
}
if (M == 1) {
int num = 0, temp;
for (int i = 1; i <= N; ++i) {
if (i % 2 == 0) {
num = num + i;
temp = num;
for (int j = 1; j <= i; ++j) {
printf("%d ", temp--);
}
}
else {
num = num + 1;
for (int j = 1; j <= i; ++j) {
printf("%d ", num++);
}
// 마지막에는 한번 감소
num--;
}
printf("\n");
}
}
else if (M == 2) {
int num = 0, cnt = 2 * N - 1;
for (int i = 1; i <= N; ++i) {
for (int j = 1; j < 2 * i - 1; ++j) {
printf(" ");
}
for (int j = 1; j <= cnt; ++j) {
printf("%d ", num);
}
num++, cnt -= 2;
printf("\n");
}
}
else if (M == 3) {
int end = 1;
for (int i = 1; i <= N; ++i) {
int num = 1;
for (int j = 1; j <= end; ++j) {
printf("%d ", num++);
}
if (i < N / 2 + 1) end++;
else end--;
printf("\n");
}
}
}
반응형
'PS 문제 풀이 > Jungol' 카테고리의 다른 글
[Jungol] 정올 3101 요세푸스 문제 1 (0) | 2021.03.18 |
---|---|
[Jungol] 정올 1337 달팽이 삼각형 (0) | 2021.03.17 |
[Jungol] 정올 1495 대각선 지그재그 (0) | 2021.03.17 |
[Jungol] 정올 1331 문자마름모 (0) | 2021.03.17 |
[Jungol] 정올 1009 각 자리수의 역과 합(Number Reverse) (0) | 2021.03.17 |
댓글