HOT프로그래밍

[멘토링]역삼각형 별찍기 끝판왕 뽀개버리기 본문

#include <언어>/C

[멘토링]역삼각형 별찍기 끝판왕 뽀개버리기

NetShin 2018. 5. 2. 20:02

매주 수요일마다 멘토가 되어 C언어 멘토링을 해주는 학과행사가 있다

나는 문법보다는 알고리즘 해결능력을 키워주는걸 목표로 잡고 하고있는데

드디어 끝판왕 문제가 나왔다 

그게바로 별찍기문제인데 긴말없이 한번 뽀개버리도록 하겠다


http://59.23.150.58/30stair/tri3/tri3.php?pname=tri3


우선 뽀개기전에 코드를 보면



이렇게 된다
일단 5를 입력했을 때 우리의 목표는


이렇게 나와야한다

그럼여기서 우리는 두가지 구간을 볼 수 있다
바로 매번 줄바꿈할때마다 늘어나는 공백구간과 줄바꿈할때마다 점점 줄어드는 별이다
그럼 한번 제어변수 i가 담당하는 for문안을 파헤쳐보도록하겠다

늘어나는 공백구간

풀어보면 다들 감이 잡혔겠지만

for (j = 0; j < i; j++)
printf(" ");

이부분이다
아까 말했듯이 공백구간은 줄바꿈을 할 때마다 늘어난다
for문의 기본적인 개념은 (초기식; 조건식; 증감식)으로 이루어지는데 이 코드에서는
매번 줄바꿈이 끝날때마다 증가하는 제어변수i를 조건식에 갖다 붙여서 공백이 점점 많아지도록 설정했다
이해가 되지않는다면 계속 위에 저 진한글씨를 되새기면서 코드를 잘 따라보도록하자

줄어드는 별

고민해보면 알겠지만 줄어드는 별은

  for (j = i; j < n; j++)
printf("*");

이구간이다
여기도 아까 말했듯이 별구간은 줄바꿈을 할 때마다 줄어든다
다시한번도 for문의 개념인 (초기식; 조건식; 증감식)을 생각해보자
여기선 매번 줄바꿈이 끝날 때마다 증가하는 제어변수i를 j의 초기식으로 설정했고 조건식을 n보다 작도록 고정시켜놨다
여기서 줄바꿈하고나서 제어변수i가 증가하면 제어변수j의 초기식도 증가한다 
제어변수j의 초기식이 증가하면 초기식은 조건식n에 가까워지고 반복횟수가 줄어든다
그래서 매번 줄바꿈이 일어날 때마다 출력하는 별의 갯수가 줄어드는 것이다

여기까지 한번 별찍기뽀개기 포스트를 작성해보았다
방문자들이 잘 뽀갰을지는 잘 모르겠지만 조금이라도 도움이 되었다면 고마울 뿐이다


Comments