초보 개발자의 이야기, 릿허브

[C] 프로그래머스 직사각형 별찍기 본문

코딩테스트/📘 프로그래머스 (programmers)

[C] 프로그래머스 직사각형 별찍기

릿99 2021. 9. 11. 13:43
728x90
반응형
1. 문제이해

https://programmers.co.kr/learn/courses/30/lessons/12969

 

코딩테스트 연습 - 직사각형 별찍기

이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 제한 조건 n과 m은 각각 1000 이하인 자연수

programmers.co.kr

 

두 개의 정수 n, m을 입력받아 별 문자(*)를 이용해

가로 길이가 n, 세로 길이가 m인 직사각형 형태를 출력하는 것이 목표이다.

 

 

 

2. 문제풀이

 

이중 for문을 이용하면 되는 간단한 문제이다.

안쪽의 for문을 통해 가로의 길이만큼 별을 찍고,

바깥쪽의 for문을 통해 세로의 길이만큼 별을 찍어주면 된다.

자세한 설명은 소스코드를 통해 더 알아보도록 하자.

 

주어진 틀은 아래와 같았다.

(주어진 printf문은 바꾸어 소스코드를 작성했다.)

 

 

 

 

3. 소스코드
#include <stdio.h>

int main(void) {
    int a;
    int b;
    int i, j;
    scanf("%d %d", &a, &b);
    
    for(i = 0; i < b; i++){ // 세로의 길이(b)만큼 반복
        for(j = 0; j < a; j++){ // 가로의 길이(a)만큼 별 찍기
            printf("*");
        }
        printf("\n"); // 한줄이 끝나면 개행
    }
    
    return 0;
}

가로의 길이(a)와 세로의 길이(b)를 입력받아, 이중 for문에 적용해주었다.

예를 들어, a=3, b=4 인 경우의 동작은 다음과 같다.

 

 

1.  for(i = 0; i < 4; i++) 이므로, 우선 i=0부터 시작


2.  for(j = 0; j < 3; j++) 이므로, j=0부터 시작

 

3.  printf("*"); 을 안쪽 for문인 j의 범위만큼 반복 (0, 1, 2로, 총 3번 반복)


4.  j에 대한 for문이 끝났으므로, 해당 for문을 빠져나감

 

5.  i=0인 경우의 for문이 끝난것이므로, printf("\n");

 

6.  i=1이 되고, 다시 위의 과정 반복
    

 

위와 같은 과정을 반복해, 가로 길이가 a, 세로 길이가 b인

직사각형 형태의 모양을 찍어낼 수 있다.

 

 


코딩의 정석.. 같은 문제랄까..🤭

이번에는 어렵지 않기도 하고 해서 C언어로 구현해보았다.

개인적으로는 추억이 새록새록 떠오르는 문제였다.

 

처음 과에 들어오고나서 첫 C언어 수업때, 처음으로 내주신 과제였는데

그때는 이 문제가 왜 그렇게 어려웠던지..🤣

정말 아무것도 모르던 시절이었던때라.. 뭘 해도 막막하던 때였는데..

예전의 나처럼 힘들게 코딩을 하고 계신 분들이 있다면,

포기하지 마시고, 언젠가는 꼭 빛을 볼거라고 말씀드리고 싶다!🙏🙏

물론 나도 아직 멀었지만.. 멋지게 성장한 개발자가 되기까지 열심히 노력해야지🙂

 

 

728x90
반응형