본문 바로가기

Programming Language/C C++17

코드업 1098번 문제 - 막대사탕 격자에 올려놓기 2차원 배열의 동적 할당 문제 주의할 점 - 할당하고 해제하는 동작도 함수로 만들자. 해제를 안하면 디버깅하고 다시 실행이 되지 않는다. 왜 안되는 지 정확한 이유는 모름;; #include using namespace std; // int형 2차워 배열 동적 할당하는 함수 int** alloc2Darr(int w, int h) { if (w h >> w; // 2차원 배열 a 선언 int** a; // 2차원 배열 a 할당 a = alloc2Darr(w, h); //for (int i = 0; i < h; i++) //{ // for (int j = 0; j < w; j++) // { // a[i][j] = 0; // cout n; // 각 막대의 정보를 입력 받는다. for (int k = 1; k .. 2022. 6. 21.
[알고리즘 문제풀이] 14. 뒤집은 소수★ 2022. 1. 20.
[C언어 기초] 2. C ++ 증감연산자 #include int main(){ int a, b, k, m; a = b = 2; a++; ++b; printf("%d, %d\n", a, b); return 0; } 2022. 1. 16.
[알고리즘 문제풀이] 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.