게임 클라이언트 개발/알고리즘 문제

[알고리즘 2단계] 다이아몬드, 마름모 (반복문 활용)

주운녕 2020. 7. 25. 23:59

[출처 : Goorm 사이트 - 웃긴 초밥]

문제

가장 빛나는 보석 다이아몬드를 출력하는 문제입니다. 입력한 숫자에 해당하는 줄 수 에 맞게 다이아몬드 모양(마름모)을 출력하는 프로그램을 작성해보시오.

*주의사항은 입력이 짝수일 경우와 홀수일 경우의 처리입니다.

입력

자연수 (최대 100)

 

출력

입력한 수에 맞는 라인 수를 가진 마름모 모양

 


풀이

이중 반복문 연습할 때 많이 해보았던 유형이다. *로 피라미드를 만들었던 것을 잘 응용하면 될 것 같다.

- 피라미드 만드는 코드

//피라미드
#include <stdio.h>
int main() {
	int n;
	
	scanf("%d", &n);
	for(int i=1; i<=n; i++){
		for(int k=0; k<n-i; k++){
			printf(" ");
		}
		for(int j=0; j<i*2-1; j++){
			printf("*");
		}
		printf("\n");
	}
	
	return 0;
}

 

1. 피라미드 코드를 활용하여 마름모 상단의 모양을 만들었다.

2. 이 코드를 활용해서 마름모 하단의 코드도 만들었다.

3. 짝수 입력을 기준으로 코드를 만들었기 때문에 홀수의 경우를 판별후 추가되는 줄을 생성할 수 있도록 작성하였다.

 

- 마름모 만드는 코드

//마름모
#include <stdio.h>
int main() {
	int N, n;
	
	scanf("%d", &N); //입력
	
	if(N%2==1)	n=N-1; //n이 홀수면 일단 짝수로 취급하여 생성
	else	n=N; // 짝수일 경우 그대로 진행
	
	//마름모 상단부.
	for(int i=1; i<=n/2; i++){
		for(int k=0; k<=n/2-i; k++){
			printf(" ");
		}
		for(int j=0; j<i*2-1; j++){
			printf("*");
		}
		printf("\n");
	}
    
	//입력값이 짝수일 경우와는 다르게 홀수일 경우 중간 줄에 *이 홀수개수인 줄이 추가된다.
	if(N%2==1){
		for(int i=0; i<N; i++){
			printf("*");
		}
		printf("\n");
	}
    
	//마름모 하단부. 상단부를 응용하여 작성했다.
	for(int i=n/2; i>0; i--){
		for(int k=n/2-i; k>=0; k--){
			printf(" ");
		}
		for(int j=i*2-1; j>0; j--){
			printf("*");
		}
		printf("\n");
	}
	
	return 0;
}

 

결과

 

잘 됩니다.

 

 


* 개인적인 학습 목적으로 작성한 글이기에 내용에 잘못된 정보가 있을 수 있습니다.

* 문제 출처 - level.goorm.io/exam/43202/다이아몬드/quiz/1