해결됨
it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
"11번) 숫자의 총 개수(small)" 에 관해 질문있습니다! (실행시간측정관련)
문제11번) 숫자의 총 개수(small)
의 강좌속에서, 김태원선생님께서 문제11번 처럼 코드를 작성하게 된다면, 자연수N의 크기가 너무 커졌을때, time limit가 발생한다고 하셨습니다. 그리고 " 제 컴퓨터로 만약 10억까지 숫자를 키워서 실행시킬경우, 25초, 26초 정도 걸리더라고요" 라고 수업시간에 말씀하셨습니다.
그래서 저는 직접! 제가 코드에서 시간을 측정하고 싶어서, 구글 검색을 해봤더니, time.h 헤더파일을 이용하면, 실행시간을 측정할 수 있다는 글을 보고, 제가 코드에 적용해보았습니다.
다음은 제가 작성한 코드를 붙여놓기 해놨습니다!
---------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <time.h> // 실행시간을 측정하기 위한 헤더파일
int main(int argc, char* argv[]) {
clock_t start, finish;
int N;
int cnt = 0; // 숫자의 총 개수세는용
float time;
start = clock(); // 시간 측정 시작
scanf("%d", &N); // 자연수N 입력
for (int i = 1; i <= N; i++) {
int save = i; // 원본i의 값이 바뀌면 안되서, 일단 숫자 복사해놓기
while (save > 0) {
cnt++;
save = save / 10;
}
}
printf("%d\n", cnt);
finish = clock(); // 시간 측정 종료
time = (float)(finish - start) / CLOCKS_PER_SEC;
printf("시간측정: %f\n", time);
return 0;
}
-------------------------------------------------------------------------------------------------------------------
돌려보았더니, 시간이 8초정도 나왔습니다.
저는 scanf로 사용자로부터 입력받기 전부터 시간측정을 시작하는걸로 코드를 작성하였는데,
하다보니 궁금증이 생겼습니다.
시간측정을 어느순간부터 시작해서 언제 시간측정을 끝내야 되는건가요?
강사님께서는 25초 정도 나왔다는데, 왜 저는 8초정도 나왔을까요??
정말정말 너무 궁금합니다 ㅠㅠㅠㅠㅠㅠ
답변해주시면 감사하겠습니다!