난이도 : D2
문제번호 : 2005
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
크기가 N인 파스칼의 삼각형을 만들어야 한다. N을 입력 받아 크기 N인 파스칼의 삼각형을 출력하는 프로그램을 작성하시오. |
제약사항
파스칼의 삼각형의 크기 N은 1 이상 10 이하의 정수이다. (1 ≤ N ≤ 10) |
입력
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다. 각 테스트 케이스에는 N이 주어진다. |
출력
각 줄은 '#t'로 시작하고, 다음 줄부터 파스칼의 삼각형을 출력한다. 삼각형 각 줄의 처음 숫자가 나오기 전까지의 빈 칸은 생략하고 숫자들 사이에는 한 칸의 빈칸을 출력한다. (t는 테스트 케이스의 번호를 의미하며 1부터 시작한다. |
예시
입력 | 출력 |
1 4 |
#1 1 1 1 1 2 1 1 3 3 1 |
2. 문제풀이
규칙을 찾으면 금방풀수 있는 문제였습니다. (인덱스를 이용하는것에 익숙하다면 말이죠)
파스칼 삼각형을 보면 제일왼쪽열과 제일위쪽행은 1입니다. 이후 다른값들은 자신의 위쪽값 더하기 위쪽왼쪽값을 더하면 됩니다.
이걸 코드로 풀으니 다음과 같게 되었습니다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include <iostream>
#include <string>
using namespace std;
// D2_1926 파스칼 삼각형
int main(){
int length, a;
cin >> length;
for(int k=1; k<= length; k++){
cin >> a;
//삼각형의 크기는 10이하이므로 10X10의 배열로 잡는다.
int pa[10][10];
//제일왼쪽열과 제일위쪽행을 1로 초기화합니다.
for (int i = 0; i < a; i++){
pa[0][i] = 0;
pa[i][0] = 1;
}
//반복을 돌면서자신의 위쪽과 왼쪽위를 더하며 계산해 나간다.
for(int i=1; i<a; i++){
for(int j=1; j<a; j++){
pa[i][j] = pa[i-1][j-1] + pa[i-1][j];
}
}
//출력
cout << "#"<<k<<endl;
for(int i=0; i<a; i++){
for(int j=0; j<=i; j++){
cout << pa[i][j] << " ";
}
cout<<endl;
}
}
return 0;
}
|
pascal_triangle = [[0 for _ in range(10)] for _ in range(10)]
for i in range(10):
pascal_triangle[i][0] = 1
for y in range(1, 10):
for x in range(1, 10):
pascal_triangle[y][x] = pascal_triangle[y-1][x] + pascal_triangle[y-1][x-1]
for t in range(int(input())):
N = int(input())
print('#{}'.format(t+1))
for y in range(N):
for x in range(y+1):
print(pascal_triangle[y][x], end=' ')
print()
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
시각 덧셈 C++(SW Expert Academy) (0) | 2020.02.07 |
---|---|
어디에 단어가 들아갈 수 있을까 C++(SW Expert Academy) (0) | 2020.02.06 |
간단한 369게임 C++(SW Expert Academy) (0) | 2020.02.04 |
조교의 성적 매기기 C++(SW Expert Academy) (0) | 2019.11.21 |
파리 퇴치 C++, Python(SW Expert Academy) (0) | 2019.11.21 |
댓글