본문 바로가기

Programming Language41

[알고리즘 문제풀이] 13. 가장 많이 사용된 자릿수★ #include int main(void){ //freopen("input.txt", "rt", stdin); // 1. 자연수를 입력 받는다. char array[100]; int n, cnt, result = 0; int max = -2147000000; scanf("%s", &array); for(int i = 0; array[i] != '\0'; i++){ cnt = 0; for(int j = 0; array[j] != '\0'; j++){ if( array[j] == array[i]) cnt++; } cnt -= 1; if(cnt > max) { result = array[i] - 48; printf("i = %d \n", i); printf("cnt는 %d \n", cnt); printf("m.. 2022. 1. 7.
[알고리즘 문제풀이] 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.
[알고리즘 문제풀이] 10. 자릿수의 합★ 첫번째 나의 삽질: 배열 두 개를 이용하여 자연수, 자릿수합을 구하려고 했다 그러나, 답이 자꾸 나오지 않는다.. #include int main(void){ freopen("input.txt", "rt", stdin); // 1. 자연수를 입력 받는다. int n = 0; scanf("%d", &n); int array[n]; scanf("%d", &array); // 2. 각 자릿수의 합을 구한다. int sum[n] = {0,}; int max = 0; for( int i = 0; i < n; i++){ int a = 0; for( int j = 8; j = 0; j--){ sum[i] = sum[i] + a / 10^j; a = array[i] % 10^j; } } printf("%d", sum[.. 2022. 1. 5.
[알고리즘 문제풀이] 9. 모두의 약수(제한시간 1초)★ 내가 푼 풀이 문제점: n이 1000을 넘어가게 되면 제한시간 1초를 넘어서게 된다. #include using namespace std; int main(){ //freopen("input.txt", "rt", stdin); // 1. 자연수를 입력 받는다. int n = 0; int cnt = 0; scanf("%d", &n); // 2. 1부터 n까지 약수를 출력한다. for( int i = 1; i 2022. 1. 5.
[알고리즘 문제풀이] 8. 올바른 괄호 '('의 개수와 ')'의 개수가 같을 때 YES, 다를 때 NO 출력해주면 된다. 와, 근데 )))((( 이런 경우는 안되잖아 빼먹을 뻔했네 배열을 앞에서부터 읽어나갈 때 '('의 개수에 비해 ')'의 개수가 커지면 NO가 되겠네 #include using namespace std; int main(){ //freopen("input.txt", "rt", stdin); // 1. 문자열을 입력받는다. char array[30]; scanf("%s", &array); // 2. 각 다른 괄호의 갯수를 센다. // 왼쪽 괄호, 오른쪽 괄호의 갯수를 정의한다. int left, right = 0; for( int i = 0; array[i] != '\0'; i++){ if(array[i] == '('){ le.. 2022. 1. 5.
[알고리즘 문제풀이] 7. 영어단어 복구★ 내 방식을 포함한 해설풀이 #include using namespace std; int main(){ //freopen("input.txt", "rt", stdin); // 1. 문자열을 입력받는다. char array[100]; //scanf("%s", &array); // 이걸로 하면 띄어쓰기 때문에 입력이 안된다. gets(array); // 2. 영어알파벳만 추출하여 소문자 배열로 만든다. char englishArray[100]; int j = 0; for(int i = 0; array[i] != '\0'; i++){ if(array[i] >= 65 && array[i] = 97 && array[i] = 65 && array[i] 2022. 1. 5.
[알고리즘 문제풀이] 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.
[알고리즘 문제풀이] 5. 나이 계산★ 앞에는 6글자, 뒤에는 7글자로 총 6 + 1 + 7 = 14개 글자가 들어간다. 내가 푼 풀이 #include using namespace std; int main(){ int year = 0; char a[14]; for( int i = 0; i > a[i]; } year = 10*(a[0]-48)+a[1]-48; // 8번째, 즉 a[7]로 년대, 성별 판단 switch(a[7]){ case '1' : cout 2022. 1. 3.