티스토리 뷰

저번 글에서 그린 다이아몬드는 C#을 이용하였으며, for문이 세개 사용되었었다.

for문을 2개로 줄여보았다.

 

#include <stdio.h>
int main(void){
	int num, i, j;
	scanf("%d", &num);
	int m=num/2 + 1, k=m;
 
	for(i=0; i<num; i++){
		for(j=1; j<=k; j++){ 		//1부터 k까지
			if(j<m) 		//j가 m보다 작으면 띄어쓰기 출력 
				printf(" ");
			else 			//j가 m보다 크고 k보다 작을때 까지 별 출력
				printf("*");
		}
        if(i<num/2){ 				//num의 절반을 분기로 나눔
        	m--; k++;
		}
		else{
			m++; k--;
        }
		printf("\n");
	}
}

 

출력 부분을 if로 분기를 나누어 for문을 하나 줄였다.

 

+++

 

절댓값을 이용하여 코드를 줄였다.

 

#include <stdio.h>
#include <math.h>
int main(void){
	int num, i, j;
	scanf("%d", &num);
	int m=num/2;
 
	for(i=0; i<num; i++){			//세로
		for(j=0; j<num-abs(m); j++){ 	//가로 : num-m의 절댓값까지 실행 
			if(j<abs(m))		//j가 m의 절댓값보다 작을 때 공백 출력 
				printf(" ");
			else 			//그 외엔 별 출력 
				printf("*");
		} 
        
		m--; 				//m감소
        	printf("\n");
	}
}

 

이 방법이 훨씬 좋은듯함

 

=> 절댓값을 이용한 코드 그림

 

n=5일때의 다이아몬드 그리기

 

'프로그래밍 > 알고리즘' 카테고리의 다른 글

문자열 순열 알고리즘 JAVA  (0) 2020.11.16
C 가위바위보 게임  (0) 2019.08.20
Python 숫자 야구 게임  (1) 2019.07.29
C# 로또번호  (2) 2019.06.20
C# 다이아몬드  (5) 2019.06.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday