[알고리즘 문제풀이] 12. 숫자의 총 개수(large: 제한시간 1초)★★
N이 100,000,000까지 범위가 늘었다. 그리고 더 빨리 코드가 끝나야 한다. 더 큰 범위의 N을 계산하되, 제한시간을 단축하기 위해 for문을 1부터 n까지 돌리지 않고 숫자의 총 개수를 계산한 이전 11회에서 작성한 코드를 가져와보았다. #include int main(void){ //freopen("input.txt", "rt", stdin); // 1. 자연수를 입력 받는다. int n, num = 0; scanf("%d", &n); // 2. 자연수 별로 갯수를 나눈다. // 1개 1-9, 2개 10-99, 3개 100-999, 4개 1000-9999, // 5개 10000-99999, n은 99999까지 이므로 5개가 최대 if(n < 10){ num = 1 * n; } else if(n..
2022. 1. 6.
[알고리즘 문제풀이] 11. 숫자의 총 개수(small)★
100점 맞은 코드지만 n 이 100,000 이상으로 커지면 비효율적인 코드이다. n의 자릿수 별로 노가다로 일일히 수식을 구했다. #include int main(void){ //freopen("input.txt", "rt", stdin); // 1. 자연수를 입력 받는다. int n, num = 0; scanf("%d", &n); // 2. 자연수 별로 갯수를 나눈다. // 1개 1-9, 2개 10-99, 3개 100-999, 4개 1000-9999, // 5개 10000-99999, n은 99999까지 이므로 5개가 최대 if(n < 10){ num = 1 * n; } else if(n < 100){ num = 1 * 9 + 2 * (n-9); } else if(n < 1000){ num = 1 *..
2022. 1. 6.