[P4C] C언어 코딩 도장 : 문제 풀이 4
2021. 3. 5. 16:47
Programming Languages/C
34.10 심사 문제 : 포인터와 주소 연산자 사용하기 문제 : 표준 입력으로 정수가 입력됩니다. 다음 소스 코드를 완성하여 입력된 정수가 출력되게 만드세요. 정답 : #define _CRT_SECURE_NO_WARNINGS #include int main() { int* numPtr1; int** numPtr2; int num1; scanf("%d", &num1); numPtr1 = &num1; numPtr2 = &numPtr1; printf("%d\n", **numPtr2); return 0; } 34.10 심사 문제 : 포인터와 주소 연산자 사용하기 문제 : 표준 입력으로 두 정수가 입력됩니다(입력 값의 범위는 0~1073741824). 다음 소스 코드를 완성하여 입력된 두 정수의 합이 출력되게 만..
[P4C] C언어 코딩 도장 : UNIT 38
2021. 3. 3. 21:27
Programming Languages/C
Unit 38. 포인터와 배열 응용하기 배열의 크기를 동적으로 지정하려면 어떻게 해야 할까? 크기를 동적으로 지정하려면 포인터를 선언하고 메모리를 할당한 뒤 메모리를 배열처럼 사용해야 한다. 38.1 포인터에 할당된 메모리를 배열처럼 사용하기 포인터에 malloc 함수로 메모리를 할당해주면 포인터를 배열처럼 사용할 수 있다. - 자료형 *포인터이름 = malloc(sizeof(자료형) * 크기); #include #include // malloc, free 함수가 선언된 헤더 파일 int main() { int *numPtr = malloc(sizeof(int) * 10); // int 10개 크기만큼 동적 메모리 할당 numPtr[0] = 10; // 배열처럼 인덱스로 접근하여 값 할당 numPtr[9..
[P4C] C언어 코딩 도장 : UNIT 37
2021. 3. 3. 18:52
Programming Languages/C
Unit 37. 2차원 배열 사용하기 37.1 2차원 배열을 선언하고 요소에 접근하기 2차원 배열은 [ ] (대괄호)를 두 번 사용하여 선언하며 첫 번째 대괄호에는 세로 크기, 두 번째 대괄호에는 가로 크기를 지정한다. - 자료형 배열이름[세로크기][가로크기]; - 자료형 배열이름[세로크기][가로크기] = { { 값, 값, 값 }, {값, 값, 값} }; 2차원 배열의 요소에 접근하려면 배열 뒤에 [ ] (대괄호)를 두 번 사용하며 [ ] 안에 세로와 가로 인덱스를 지정해주면 된다. - 배열[세로인덱스][가로인덱스] #include int main() { int numArr[3][4] = { // 세로 크기 3, 가로 크기 4인 int형 2차원 배열 선언 { 11, 22, 33, 44 }, { 55, 6..
[P4C] C언어 코딩 도장 : UNIT 36
2021. 3. 3. 18:33
Programming Languages/C
Unit 36. 배열 사용하기 배열은 같은 자료형의 변수를 일렬로 늘어놓은 형태이며 반복문과 결합하면 연속적이고 반복되는 값을 손쉽게 처리할 수 있다. 36.1 배열을 선언하고 요소에 접근하기 배열은 변수 이름 뒤에 [ ] (대괄호)를 붙인 뒤 크기를 설정한다. 그리고 배열을 선언하면서 값을 초기화할 때는 { } (중괄호)를 사용한다. - 자료형 배열이름[크기]; - 자료형 배열이름[크기] = { 값, 값, 값 }; #include int main() { int numArr[10] = { 11, 22, 33, 44, 55, 66, 77, 88, 99, 110 }; // 배열을 생성하고 값 할당 printf("%d\n", numArr[0]); // 11: 배열의 첫 번째(인덱스 0) 요소 출력 printf..
[P4C] C언어 코딩 도장 : UNIT 35
2021. 3. 3. 16:00
Programming Languages/C
5[P4C] C언어 코딩 도장 : UNIT 35 이번에는 malloc 함수를 이용해 포인터에 원하는 만큼 메모리 공간을 할당받아 사용하는 방법을 알아보겠다. malloc → 사용 → free 패턴으로 사용할 수 있다. Unit 35.1 메모리 할당하기 메모리를 사용하려면 malloc 함수로 사용할 메모리 공간을 확보해야 한다(memory allocation). 이때 필요한 메모리 크기는 바이트 단위로 지정한다(메모리 할당, 해제 함수는 stdlib.h 헤더 파일에 선언되어 있다). - 포인터 = malloc(크기); #include #include // malloc, free 함수가 선언된 헤더 파일 int main() { int num1 = 20; // int형 변수 선언 int *numPtr1; //..
[P4C] C언어 코딩 도장 : UNIT 34
2021. 3. 3. 00:56
Programming Languages/C
Unit 34. 포인터 사용하기 변수는 컴퓨터의 메모리에 생성된다. 메모리에 일정한 공간을 확보해두고 원하는 값을 저장하거나 가져오는 방식이다. 보통 변수는 메모리의 특정 장소에 위치하고 있으므로 메모리 주소로도 표현할 수 있다. 변수의 메모리 주소를 구할 때는 변수 앞에 & (주소 연산자)를 붙이면 된다. #include int main() { int num1 = 10; printf("%p\n", &num1); // 008AF7FC: num1의 메모리 주소를 출력 // 컴퓨터마다, 실행할 때마다 달라짐 return 0; } 메모리 주소는 008AF7FC과 같이 16진수 형태이며 printf에서 서식 지정자 %p를 사용하여 출력한다. 물론 16진수로 출력하는 %x, %X를 사용해도 된다. 34.1 포인터..
[P4C] CodeUp 1099 : [기초-2차원배열] 성실한 개미
2021. 2. 25. 16:24
Programming Languages/C
문제 : 개미는 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직여 가장 빠른 길로 움직인다. (오른쪽에 길이 나타나면 다시 오른쪽으로 움직인다.) 미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고, 먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자. 단, 맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우, 먹이를 찾은 경우에는 더이상 이동하지 않고 그 곳에 머무른다고 가정한다. 미로 상자의 테두리는 모두 벽으로 되어 있으며, 개미집은 반드시 (2, 2)에 존재하기 때문에 개미는 (2, 2)에서 출발한다. 정답 : #include #define _CRT_SECURE_NO_WARNINGS int main() { int arr[10][10]; int ..
[P4C] CodeUp 1098 : [기초-2차원배열] 설탕과자 뽑기
2021. 2. 25. 16:14
Programming Languages/C
문제 : 격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l), 막대를 놓는 방향(d:가로는 0, 세로는 1)과 막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때, 격자판을 채운 막대의 모양을 출력하는 프로그램을 만들어보자. 정답 : #define _CRT_SECURE_NO_WARNINGS #include int main() { int h, w; int n; int l, d, x, y; int arr[100][100]={}; scanf("%d %d",&h,&w); scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d %d %d %d",&l,&d,&x,&y); if (d == 0) { for (int j = y - ..