반응형
출처: http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1335&sca=2020
Approach
종류 1과 같이 배열에 저장을 한 후 m의 값에 따라 출력을 바꾸면 된다.
종류 2의 경우는 배열의 아래쪽부터 출력을 하면 된다.
종류 3의 경우는 각 위치에 출력되는 배열의 번호를 적어놓고 생각해 보자.
종류 1
각 줄의 첫번째와 마지막 숫자 = 1입니다
3번째 줄 부터는 가운데 영역은
▶ map[i][j] = map[i - 1][j - 1] + map[i - 1][j];와 같이 구현할 수 있습니다.
정류 2
종류 1을 구현한다면 종류 2는 마지막 행부터 출력할 수 있습니다.
이때, 앞쪽에 공백 표시에 유의
종류 3
아래와 같이 "종류 1"의 배열 정보를 읽어오면 출력할 수 있습니다.
#include <stdio.h>
const int MAX_N = 30 + 5;
int map[MAX_N][MAX_N];
int N, M;
int main() {
// freopen("input.txt", "r", stdin);
scanf("%d %d", &N, &M);
map[0][0] = 1;
for (int i = 1; i < N; ++i) {
for (int j = 0; j <= i; ++j) {
if (j == 0 || j == i) map[i][j] = 1;
else map[i][j] = map[i - 1][j - 1] + map[i - 1][j];
}
}
if (M == 1) {
for (int i = 0; i < N; ++i) {
for (int j = 0; j <= i; ++j) {
printf("%d ", map[i][j]);
}
printf("\n");
}
}
else if (M == 2) {
for (int i = N-1; i >= 0; --i) {
// 앞쪽에 공백 출력
for (int t = N - 1; t > i; --t) {
printf(" ");
}
// 삼각형 숫자 출력
for (int j = 0; j <= i; ++j) {
printf("%d ", map[i][j]);
}
printf("\n");
}
}
else { // M == 3
for (int j = N - 1; j >= 0; --j) {
for (int i = N - 1; i >= j; --i) {
printf("%d ", map[i][j]);
}
printf("\n");
}
}
}
반응형
'PS 문제 풀이 > Jungol' 카테고리의 다른 글
[Jungol] 정올 1692 곱셈 (0) | 2021.03.17 |
---|---|
[Jungol] 정올 1097 앞뒤 같은 제곱 (0) | 2021.03.17 |
[Jungol] 정올 2538 PATRIK (0) | 2021.03.17 |
[Jungol] 정올 1328 빌딩 (0) | 2021.03.17 |
[Jungol] 정올 3123 키로거(Keylogger) (0) | 2021.03.17 |
댓글