반응형
문제
삼각형의 높이 n과 종류 m을 입력 받은 후 다음과 같은 삼각형 형태로 출력하는 프로그램을 작성하시오.
풀이
기본적으로 모두 푸는 방법은 동일한데, 행렬을 만들어서 별을 집어넣을 필요는 없다.
빈 공간은 모두 공백을 출력함으로써 해결 가능하기 때문이다.
for 루프시에는 행렬처럼 0부터 시작시키는게 아니라, 1부터 시작을 시키는게 생각이 편하다.
for ( int i = 1; i <= n; i++){
for ( int j = 1; j <= i; j++){
printf("*");
}
printf("\n");
}
처음부터 n개를 채우고, 점차 하나씩 줄여나가면 된다.
for ( int i = n; i >= 1; i--){
for ( int j = 1; j <= i; j++){
printf("*");
}
printf("\n");
}
for ( int i = 1; i <= n; i++){
for ( int j = (n-i); j >= 1; j--){
printf(" ");
}
for ( int j = 1; j <= 2*i-1;j++){
printf("*");
}
printf("\n");
}
for ( int i = 1; i <= n/2+1; i++){
for ( int j = 1; j <= i; j++) printf("*");
printf("\n");
}
for ( int i = n/2; i >=1; i--){
for ( int j = i; j>=1; j--) printf("*");
printf("\n");
}
for ( int i = 1; i <= n/2+1; i++){
for ( int j = i; j <= n/2; j++) printf(" ");
for ( int j = 1; j <= i; j++) printf("*");
printf("\n");
}
for ( int i = n/2; i>=1; i--){
for ( int j = 1; j <= n/2 - i + 1; j++) printf(" ");
for ( int j = i; j>= 1; j--) printf("*");
printf("\n");
}
마찬가지로 규칙 1,2로 나누어 2개씩 감소, 2개씩 증가를 구현한다.
for ( int i = 1; i <=n/2+1; i++){
for ( int j = 1; j < i; j++) printf(" ");
for ( int j = 1; j <= n - 2*(i-1); j++) printf("*");
printf("\n");
}
for ( int i = n/2; i>=1; i--){
for ( int j = i; j > 1; j--) printf(" ");
for ( int j = 1; j <= n - 2*(i-1); j++) printf("*");
printf("\n");
}
규칙2에서 공백의 개수는 n/2 개로 같다.
for ( int i = 1; i <= n/2+1; i++){
for ( int j = 1; j < i; j++) printf(" ");
for ( int j = i; j <= n/2+1; j++) printf("*");
printf("\n");
}
for ( int i = n/2; i >= 1; i --){
for ( int j = 1; j<=n/2; j++) printf(" ");
for ( int j = n/2+1; j>= i; j--) printf("*");
printf("\n");
}
마찬가지로 규칙1, 규칙 2로 나눈다. 그리고 공백과 별을 따로 따로 출력한다.
별의 경우 2개씩 증가, 2개씩 감소하므로 2*(i-1) 과 같이 기준을 잘 정의한다.
for ( int i = 1; i <= (n/2)+1; i++){
for ( int j = 1; j < i; j++) printf(" ");
for ( int j = 1; j <= 1+ 2*(i-1); j++) printf("*");
printf("\n");
}
for ( int i = (n/2); i >=1; i--){
for ( int j = i-1; j >= 1; j--) printf(" ");
for ( int j = 1; j <= 1+2*(i-1); j++) printf("*");
printf("\n");
}
결과
생략
반응형
'SW > 문제은행' 카테고리의 다른 글
[C/C++] 정올 - 파스칼 삼각형 #2071 (0) | 2024.04.24 |
---|---|
[C/C++] 정올 - 달팽이 트리 #5398 (0) | 2024.04.17 |
[C/C++] 정올 - 달팽이 삼각형 #1337 (0) | 2024.04.17 |
[C/C++] 정올 - 달팽이 사각형 #1707 (0) | 2024.04.17 |
댓글