인프런 커뮤니티 질문&답변

조준수님의 프로필 이미지
조준수

작성한 질문수

홍정모의 따라하며 배우는 C언어

6.15 중첩된 루프들

3번째 예시 질문

작성

·

164

0

3번째 예시를 시작지점 알파벳과 첫행기준 얼만큼 출력할지를 입력으로 받아서 출력하는 걸로 변형을 해봤는데요

교수님이 코딩한거랑 다르게

변수를 추가를하여 작성하였는데요.

그로인해 코드의 길이가 더 늘어난 감이 없지않은데

혹시 이런방식이 속도면에서 문제가 되는지 궁금합니다.

int main()

{

char alphabet = 0;

int number = 0, originNumber = 0;

char originAlphabet;

printf("%s\n", "Input Alphabet what you want to start through and how many to print");

scanf("%c %d", &alphabet, &number);

originAlphabet = alphabet;

originNumber = number;

printf("%s\n\n", "Result is being printed......");

for (int i = 0; i < originNumber; i++)

{

alphabet = originAlphabet++;

for (int j = 0; j < number; j++)

{

printf("%c ", alphabet);

alphabet++;

}

number--;

printf("\n");

}

printf("%s\n", "Printing completed.....");

}

답변 1

1

프로그램의 유의미한 속도 차이가 있는지 보려면 입력 크기와 반복문의 수행 횟수를 따져보면 되는데 (알고리즘 면에서 이런 방식으로 성능 체크를 합니다.), 강의의 코드와 질문자님의 코드는 for문의 수행 횟수가 동일합니다. 꽤 크기가 큰 배열의 원소들을 복사해 오는 그런게 아닌 이상 한 두 개의 변수 대입 정도는 속도에 영향이 없다시피 합니다. 결론은 속도 차이 거의 없다고 볼 수 있습니다. 첫번째 for문이 도는 횟수인 originNumber 가 어마어마하게 큰 숫자라면 alphabet = originAlphabet++ 대입도 그만큼 이루어진다는 것이니 이땐 좀 속도 차이가 조금은 있을지도 모르겠네요. 

이렇게 속도가 어떨지 대충 가늠해 보시려면 코드 길이보단 "수행 횟수", "입력 크기"를 따져보시면 됩니다. 

조준수님의 프로필 이미지
조준수
질문자

감사합니다!!!!

조준수님의 프로필 이미지
조준수

작성한 질문수

질문하기