728x90
문제 : 행의 크기가 정수 n으로 주어집니다. 행의 크기가 n인 파스칼 삼각형을 출력하는 프로그램을 작성해 보세요. 파스칼 삼각형이란 다음과 같은 형태로 나타나며, (i, j)에 적힌 숫자가 (i - 1, j - 1)에 적힌 숫자와 (i - 1, j)에 적힌 숫자의 합으로 나타납니다.
n = 5일때의 예
파스칼 삼각형 구조를 이해해 보자면, 각 행의 첫 번째와 마지막 요소가 1입니다.
그리고 중간의 요소가 바로 윗부분 2개 요소의 합이 됩니다.
로직은 파스칼 삼각형을 저장할 2차원 배열을 선언 후, 2차원 배열에 윗부분 두 개 값을 더하여 넣어줍니다.
fun generatePascalTriangle(n: Int): List<List<Int>> {
// 파스칼 삼각형을 저장할 리스트 초기화
val triangle = MutableList(n) { MutableList(it + 1) { 1 } }
// 파스칼 삼각형 계산
for (i in 2 until n) {
for (j in 1 until i) {
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j]
}
}
return triangle
}
이제 2차원 배열 돌면서 형식에 맞게 출력해 주면 됩니다.
for (row in matrix) {
for (num in row) {
print("$num ")
}
println()
}