이런 문제는 일반적으로 여러 for-loop를 사용하여 풀 수 있습니다.
마름모의 중간 지점(위의 예제에서 32123)을 기준으로 위 아래가 대칭입니다. 따라서 마름모의 상단과 하단을 나누어 생각할 수 있습니다.
각 줄에 대해 공백을 얼마나 출력할 것인지, 그리고 어떤 숫자를 어떤 순서로 출력할 것인지를 정할 수 있어야 합니다.
아래는 주어진 조건에 따라 해당 문제를 해결하는 C 코드 예시입니다.
#include <stdio.h> int main() { int N; scanf("%d", &N); // 상단 부분 출력 for (int i = 1; i < N; i++) { // 앞쪽 공백 출력 for (int j = 0; j < N - i; j++) { printf(" "); } // 감소하는 숫자 출력 for (int j = i; j > 0; j--) { printf("%d", j); } // 증가하는 숫자 출력 for (int j = 2; j <= i; j++) { printf("%d", j); } printf("\n"); } // 중앙 부분 출력 for (int i = N; i > 0; i--) { printf("%d", i); } for (int i = 2; i <= N; i++) { printf("%d", i); } printf("\n"); // 하단 부분 출력 for (int i = N - 1; i >= 1; i--) { // 앞쪽 공백 출력 for (int j = 0; j < N - i; j++) { printf(" "); } // 감소하는 숫자 출력 for (int j = i; j > 0; j--) { printf("%d", j); } // 증가하는 숫자 출력 for (int j = 2; j <= i; j++) { printf("%d", j); } printf("\n"); } return 0; }
이런 문제는 일반적으로 여러 for-loop를 사용하여 풀 수 있습니다.
마름모의 중간 지점(위의 예제에서 32123)을 기준으로 위 아래가 대칭입니다. 따라서 마름모의 상단과 하단을 나누어 생각할 수 있습니다.
각 줄에 대해 공백을 얼마나 출력할 것인지, 그리고 어떤 숫자를 어떤 순서로 출력할 것인지를 정할 수 있어야 합니다.
아래는 주어진 조건에 따라 해당 문제를 해결하는 C 코드 예시입니다.
#include <stdio.h> int main() { int N; scanf("%d", &N); // 상단 부분 출력 for (int i = 1; i < N; i++) { // 앞쪽 공백 출력 for (int j = 0; j < N - i; j++) { printf(" "); } // 감소하는 숫자 출력 for (int j = i; j > 0; j--) { printf("%d", j); } // 증가하는 숫자 출력 for (int j = 2; j <= i; j++) { printf("%d", j); } printf("\n"); } // 중앙 부분 출력 for (int i = N; i > 0; i--) { printf("%d", i); } for (int i = 2; i <= N; i++) { printf("%d", i); } printf("\n"); // 하단 부분 출력 for (int i = N - 1; i >= 1; i--) { // 앞쪽 공백 출력 for (int j = 0; j < N - i; j++) { printf(" "); } // 감소하는 숫자 출력 for (int j = i; j > 0; j--) { printf("%d", j); } // 증가하는 숫자 출력 for (int j = 2; j <= i; j++) { printf("%d", j); } printf("\n"); } return 0; }