[알고리즘 문제풀이] 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.
[알고리즘 문제풀이] 6. 숫자만 추출★
내가 푼 코드: 3. 0280000... -> 28로 자릿수를 구해 숫자로 만드는 것만 구현하지 못하였다. #include using namespace std; int main(){ freopen("input.txt","rt",stdin); char array[50]; int numberArray[50] = {0, }; // 배열의 요소를 모두 0으로 초기 int digit, digitNumber, number = 0; // 수릿수, 각 자리수, 구하려는 수 int divisorNumber = 0; // 1. 문자열을 입력한다. scanf("%s", &array); printf("%s\n", &array); for(int i = 0; i < 50; i++){ printf("%d", numberArray[..
2022. 1. 4.