Lee Jaeyoon2
재유니버스
Lee Jaeyoon2
전체 방문자
오늘
어제
  • 분류 전체보기 (228)
    • TIL (165)
    • 생각 (11)
    • 서평 (1)
    • JavaScript & TypeScript (4)
    • React (0)
    • C (45)
    • 에러 핸들링 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 변수
  • JavaScript
  • 코딩 도장
  • 회고
  • 객체
  • dotenv
  • 코드숨
  • 5F
  • 심사 문제
  • 코드숨 리액트 8기
  • react
  • 코드숨 리액트
  • c언어
  • 실수
  • dotenv-webpack
  • TiL
  • 플래그
  • C언어 코딩 도장
  • map
  • C

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Lee Jaeyoon2

재유니버스

C

[C] C언어 코딩 도장 31.7 심사문제: 산 모양으로 별 출력하기

2022. 4. 27. 09:00

표준 입력으로 삼각형의 높이가 입력됩니다(입력 값의 범위는 3~10). 입력된 높이만큼 산 모양으로 별을 출력하는 프로그램을 만드세요(scanf 함수 호출 전에 문자열을 출력하면 안 됩니다). 이때 출력 결과는 예제와 정확히 일치해야 합니다. 모양이 같더라도 공백이나 빈 줄이 더 들어가면 틀린 것으로 처리됩니다.

 

표준입력

3

 

표준 출력

  *  
 *** 
*****

 

표준 입력

5

 

표준 출력

     *
    ***
   ******
  ********
 **********

 

정답

#include <stdio.h>

int main()
{
    int num;
    scanf("%d", &num);

    for (int i = 0; i < num; i++)
    {
        for (int j = 0; j <= (num - 1) * 2 + 1; j++)
        {
            if (j >= num - i - 1&& j <= num + i - 1)
                printf("*");
            else
                printf(" ");
        }
        printf("\n");
    }

    return 0;
}

 

풀이

먼저, 가로와 세로를 확인해야 하는데, 입력받은 수가 3일 때, 산의 높이라고 할 수 있는 가로가 3이고, 5인 경우에도 마찬가지이므로 가로는 그냥 입력받는 수라고 생각하면 된다.

다음으로 따져봐야 할 것이 세로인데,  3을 기준으로, i의 값이 0일 때, j의 값 0,1이 공백이고 2는 *이며 3과4는 공백이다. i의 값이 1일 때,

j의 값 0이 공백이고 1,2,3은 *이고 4가 공백이다. i가 3일 때는 공백이 없고 전부 *로 채워져있다. 따라서, j는 입력받은 수에서 i와 1만큼을 빼준 숫자보다 크거나 같고 입력받은 수에서 i를 더하고 1만큼 빼준 수보다 작거나 같을 때까지 *을 출력하면 피라미드 모양을 만들 수 있다.

만약 여기서 1을 제외하지 않으면 산 모양의 가장 아랫줄이 1칸 띄워진 채로 산 모양이 그려지므로 오답이 나오게 된다.

이 문제는 초보자가 풀면 오랜 시간이 걸릴 수도 있고, 못 풀 수도 있다. 하지만 그렇다고 해서 낙담할 필요는 없고, 이해가 될 수 있을 때까지 이 문제를 복기해보자.

'C' 카테고리의 다른 글

[C] C언어 코딩 도장 33.8 심사문제: 5와 11의 배수, 공배수 처리하기  (0) 2022.04.27
[C] C언어 코딩 도장 32.6 심사문제: 중첩 루프 빠져나오기  (0) 2022.04.27
[C] C언어 코딩 도장 30.7 심사문제: 두 수 사이의 숫자 중 7로 끝나지 않는 숫자 출력하기  (0) 2022.04.27
[C] C언어 코딩 도장 29.10 심사문제: 숫자의 합 구하기  (0) 2022.04.27
[C] C언어 코딩 도장 28.11 심사문제: 교통카드 잔액 출력하기  (0) 2022.04.27
    'C' 카테고리의 다른 글
    • [C] C언어 코딩 도장 33.8 심사문제: 5와 11의 배수, 공배수 처리하기
    • [C] C언어 코딩 도장 32.6 심사문제: 중첩 루프 빠져나오기
    • [C] C언어 코딩 도장 30.7 심사문제: 두 수 사이의 숫자 중 7로 끝나지 않는 숫자 출력하기
    • [C] C언어 코딩 도장 29.10 심사문제: 숫자의 합 구하기
    Lee Jaeyoon2
    Lee Jaeyoon2

    티스토리툴바