[출처 : 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
'게임 클라이언트 개발 > 알고리즘 문제' 카테고리의 다른 글
[알고리즘 2단계] 방 배정하기-완전 탐색 (Brute-Force) (0) | 2020.07.27 |
---|---|
[알고리즘 2단계] 선택 정렬(Selection Sort) (0) | 2020.07.26 |
[알고리즘 2단계] 방 탈출하기 (퀵 정렬, 이진탐색) (0) | 2020.07.24 |
[알고리즘 2단계] 알파벳 빈도 구하기 (0) | 2020.07.23 |
[알고리즘 2단계] 완전수 (0) | 2020.07.22 |