프로그래밍/CodeUp
CodeUp[Q_2018] : 개미 수열
조원일
2020. 3. 14. 02:07
728x90
1. 문제
https://codeup.kr/problem.php?id=2018
개미 수열
각 행의 마지막에는 공백을 하나 넣은 뒤 줄바꿈하시기 바랍니다. (표현에러 사유)
codeup.kr
[출처 : 코드업(https://codeup.kr/)]
이 문제는 제목 그대로 개미 수열을 구하는 문제이다
1 : 1이 1개이므로 -> 1 1
2 1 : 2가 1개, 1이 1개이므로 -> 2 1 1 1
1 1 : 1이 2개이므로 -> 1 2
이런식으로 계속 나열하는것을 개미 수열이라고 한다.
1
1 1
1 2
1 1 2 1
1 2 2 1 1 1
2. 해답
#include <stdio.h>
int arr[25][9999] = { 0, };
int main() {
int a, b, c, tmp, p;
arr[0][0] = 1;
scanf("%d %d", &a, &b);
for (int i = 1; i < b; i++) {
tmp = arr[i - 1][0];
p = 0;
c = 1;
for (int j = 1; j < 9999; j++) {
if (arr[i-1][j] == 0) {
// 이전 배열의 값이 0일경우
// 0은 -> 한줄이 끝남을 의미
arr[i][p++] = tmp;
arr[i][p] = c;
break;
}
else if (arr[i-1][j] != tmp) {
// 0이 아닌값중 tmp와 다른 수가 나오면
arr[i][p++] = tmp;
arr[i][p++] = c;
tmp = arr[i-1][j];
c = 1;
}
else c++;
}
}
for (int i = a - 1; i < b; i++) {
for (int j = 0; j < 9999; j++) {
if (arr[i][j] != 0) printf("%d ", arr[i][j]);
else break;
}
printf("\n");
}
return 0;
}