31.7 심사문제 질문
, 김 태건님이 작성문의에 필요한 코드를 제외한 정답 코드는 삭제했습니다.
for (int j = 0; j < h; j++)
{
if (j < i)
printf("*");
}
이렇게 코드를 입력하고 심사제를 통고하였습니다.
근데 답을 보니 두번째 반복문에서
for (int j = 0; j < height - 1; j++)
{
if (j < i)
printf("*");
이렇게 되어있어 저걸로 바꿔서 해보니 똑같이 피라미드가 만들어지던데 저 두 코드의 다른점이 있는건가요?
(도장_관리자에 의해 편집됨 - 원문 제출일 2016년 10월 27일, 목요일, 오후 4:24 )
회신: 31.7 심사문제 질문
, 도장_ 관리자님이 작성안쪽 루프를 height까지 반복하느냐,
height-1까지 반복하느냐의 차이입니다.
*를 찍는 부분은 if( j < i)에서 결정하기 때문에
결과에는 영향을 주지 않습니다.
문제에서 원하는 결과를 내는데는 둘 다 문제가 없습니다.
단, height-1까지 반복하는 코드는 루프를 1번 덜 돌게 됩니다.
100개짜리를 출력한다면 100번 덜 돌게 되겠죠.
바깥에서 height번 반복하고, 안쪽에서 height번 반복한다면
총 반복 횟수는 height * height가 됩니다.
바깥에서 height번 반복하고, 안쪽에서 height-1번 반복한다면
총 반복 횟수는 height * height - height가 됩니다.
즉, 좀 더 효율적인 코드입니다.
감사합니다.