Bonus 1. Pascal's Triangle Reconstruction
보너스 문제는 평균적인 실습 문제보다 더 어렵게 출제되며, 학생들의 자발적 심층 학습을 돕기 위한 문제입니다. 보너스 문제를 풀면 다른 실습 문제에서 받은 감점을 일부 면제받을 수 있습니다. 따라서 평소에 실습을 성실히 수행했다면 보너스 문제를 풀지 않아도 불이익은 없습니다. 실습 시간에는 보너스 문제에 대한 질문을 받지 않습니다.

파스칼의 삼각형은 1에서 시작해서, 양 끝은 모두 1로 고정하고, 나머지는 위의 행에 인접한 두 숫자를 더해서 만들어집니다. 자세한 사항은 Wikipedia를 참조하세요
이 문제는 위의 파스칼 삼각형을 확장해서, 임의의 숫자 리스트로부터 시작해 삼각형을 계산합니다. 파스칼 삼각형과 마찬가지로, 어떤 한 행이 주어졌을 때 다음 행의 양 끝은 이전 행과 동일하고, 행의 중간에는 이전 행에서 인접한 두 수의 합이 오게 됩니다. 예를 들어 2 7 8 3이 주어졌을 때, 그 다음 행은 양끝이 2와 3으로 동일하고 가운데에 2+7(9), 7+8(15), 8+3(11)이 오게 되어 결과적으로 2 9 15 11 3이 됩니다. 이를 반복하면 아래와 같이 확장된 파스칼 삼각형을 얻을 수 있습니다.
2 7 8 3 <-- 시작
2 9 15 11 3
2 11 24 26 14 3
2 13 35 50 40 17 3
...
1 8 10 5 7 5 <-- 시작
1 9 18 15 12 12 5
1 10 27 33 27 24 17 5
...
한편, 주어진 행으로부터 위의 행이 무엇이었을 지를 계산하는 것도 가능합니다. 위의 두 개의 예시에서 2 7 8 3은 사실 2 5 3의 다음 행이고, 2 5 3은 2 3의 다음 행입니다. 1 8 10 5 7 5는 1 7 3 2 5의 다음 행입니다. 따라서, 위의 두개 예시는 사실 아래와 같은 더 큰 삼각형의 일부라고 이해할 수 있습니다.
2 3
2 5 3
2 7 8 3 <-- 시작
2 9 15 11 3
2 11 24 26 14 3
2 13 35 50 40 17 3
1 7 3 2 5
1 8 10 5 7 5 <-- 시작
1 9 18 15 12 12 5
1 10 27 33 27 24 17 5
주어진 행과 양 끝이 같고, 길이가 1 작으면서, 0보다 큰 자연수로만 이루어져 있는 수열이 없다면 이전 행이 없다고 정의합니다. 위의 예시에서 2 3과 1 7 3 2 5는 이전 행이 정의되지 않습니다.
문제는 어떤 한 행이 주어졌을때 그것의 전후에 나올 행들을 계산하여 확장된 삼각형을 출력하는 것입니다.
- 주어진 행으로부터 이전 행이 존재하지 않을 때까지 이전 행들을 모두 계산합니다.
- 이전 행들을 모두 계산했을 때, 주어진 행을 포함하여 전체 행의 개수가 10보다 작다면, 주어진 행의 다음 행들을 차례로 계산해서 10개를 채웁니다
- 주어진 행을 포함한 전체 행의 개수가 10보다 크다면 다음 행은 계산하지 않고 해당 행들을 모두 출력합니다.
입력
처음 한 줄에 띄어쓰기로 구분된 숫자들이 주어집니다. 숫자는 적어도 1개 있음이 보장됩니다. 이는 어떤 삼각형의 한 줄입니다.
출력
위의 조건에 따라 확장한 삼각형을 출력합니다. 이때, 각 줄은 Python의 list를 출력하는 형식과 동일해야 합니다. 숫자들을 list에 담은 후 그대로 print()하면 됩니다.
예시 입력 1
예시 출력 1
[1, 7, 3, 2, 5]
[1, 8, 10, 5, 7, 5]
[1, 9, 18, 15, 12, 12, 5]
[1, 10, 27, 33, 27, 24, 17, 5]
[1, 11, 37, 60, 60, 51, 41, 22, 5]
[1, 12, 48, 97, 120, 111, 92, 63, 27, 5]
[1, 13, 60, 145, 217, 231, 203, 155, 90, 32, 5]
[1, 14, 73, 205, 362, 448, 434, 358, 245, 122, 37, 5]
[1, 15, 87, 278, 567, 810, 882, 792, 603, 367, 159, 42, 5]
[1, 16, 102, 365, 845, 1377, 1692, 1674, 1395, 970, 526, 201, 47, 5]
예시 입력 2
예시 출력 2
[1, 7, 3, 2, 5]
[1, 8, 10, 5, 7, 5]
[1, 9, 18, 15, 12, 12, 5]
[1, 10, 27, 33, 27, 24, 17, 5]
[1, 11, 37, 60, 60, 51, 41, 22, 5]
[1, 12, 48, 97, 120, 111, 92, 63, 27, 5]
[1, 13, 60, 145, 217, 231, 203, 155, 90, 32, 5]
[1, 14, 73, 205, 362, 448, 434, 358, 245, 122, 37, 5]
[1, 15, 87, 278, 567, 810, 882, 792, 603, 367, 159, 42, 5]
[1, 16, 102, 365, 845, 1377, 1692, 1674, 1395, 970, 526, 201, 47, 5]
예시 입력 3
예시 출력 3
[2, 3]
[2, 5, 3]
[2, 7, 8, 3]
[2, 9, 15, 11, 3]
[2, 11, 24, 26, 14, 3]
[2, 13, 35, 50, 40, 17, 3]
[2, 15, 48, 85, 90, 57, 20, 3]
[2, 17, 63, 133, 175, 147, 77, 23, 3]
[2, 19, 80, 196, 308, 322, 224, 100, 26, 3]
[2, 21, 99, 276, 504, 630, 546, 324, 126, 29, 3]
예시 입력 4
예시 출력 4
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
예시 출력 5
1 10 45 120 210 252 210 120 45 10 1
예시 출력 5
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
[1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]
Bonus 1. Pascal's Triangle Reconstruction
보너스 문제는 평균적인 실습 문제보다 더 어렵게 출제되며, 학생들의 자발적 심층 학습을 돕기 위한 문제입니다. 보너스 문제를 풀면 다른 실습 문제에서 받은 감점을 일부 면제받을 수 있습니다. 따라서 평소에 실습을 성실히 수행했다면 보너스 문제를 풀지 않아도 불이익은 없습니다. 실습 시간에는 보너스 문제에 대한 질문을 받지 않습니다.
파스칼의 삼각형은 1에서 시작해서, 양 끝은 모두 1로 고정하고, 나머지는 위의 행에 인접한 두 숫자를 더해서 만들어집니다. 자세한 사항은 Wikipedia를 참조하세요
이 문제는 위의 파스칼 삼각형을 확장해서, 임의의 숫자 리스트로부터 시작해 삼각형을 계산합니다. 파스칼 삼각형과 마찬가지로, 어떤 한 행이 주어졌을 때 다음 행의 양 끝은 이전 행과 동일하고, 행의 중간에는 이전 행에서 인접한 두 수의 합이 오게 됩니다. 예를 들어
2 7 8 3이 주어졌을 때, 그 다음 행은 양끝이2와3으로 동일하고 가운데에 2+7(9), 7+8(15), 8+3(11)이 오게 되어 결과적으로2 9 15 11 3이 됩니다. 이를 반복하면 아래와 같이 확장된 파스칼 삼각형을 얻을 수 있습니다.한편, 주어진 행으로부터 위의 행이 무엇이었을 지를 계산하는 것도 가능합니다. 위의 두 개의 예시에서
2 7 8 3은 사실2 5 3의 다음 행이고,2 5 3은2 3의 다음 행입니다.1 8 10 5 7 5는1 7 3 2 5의 다음 행입니다. 따라서, 위의 두개 예시는 사실 아래와 같은 더 큰 삼각형의 일부라고 이해할 수 있습니다.주어진 행과 양 끝이 같고, 길이가 1 작으면서, 0보다 큰 자연수로만 이루어져 있는 수열이 없다면 이전 행이 없다고 정의합니다. 위의 예시에서
2 3과1 7 3 2 5는 이전 행이 정의되지 않습니다.문제는 어떤 한 행이 주어졌을때 그것의 전후에 나올 행들을 계산하여 확장된 삼각형을 출력하는 것입니다.
입력
처음 한 줄에 띄어쓰기로 구분된 숫자들이 주어집니다. 숫자는 적어도 1개 있음이 보장됩니다. 이는 어떤 삼각형의 한 줄입니다.
출력
위의 조건에 따라 확장한 삼각형을 출력합니다. 이때, 각 줄은 Python의 list를 출력하는 형식과 동일해야 합니다. 숫자들을 list에 담은 후 그대로
print()하면 됩니다.예시 입력 1
예시 출력 1
예시 입력 2
예시 출력 2
예시 입력 3
예시 출력 3
예시 입력 4
1예시 출력 4
예시 출력 5
예시 출력 5