목록전체 글 (99)
juuuding
문제 [문제 링크] https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net [문제] N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4..
문제 [문제 링크] https://www.acmicpc.net/problem/1236 1236번: 성 지키기 첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다 www.acmicpc.net [문제] 영식이는 직사각형 모양의 성을 가지고 있다. 성의 1층은 몇 명의 경비원에 의해서 보호되고 있다. 영식이는 모든 행과 모든 열에 한 명 이상의 경비원이 있으면 좋겠다고 생각했다. 성의 크기와 경비원이 어디있는지 주어졌을 때, 몇 명의 경비원을 최소로 추가해야 영식이를 만족시키는지 구하는 프로그램을 작성하시오. [입력] 첫째 줄에 성의 세로 크기 N과 가로 크..
문제 [문제 링크] https://www.acmicpc.net/problem/1267 1267번: 핸드폰 요금 동호가 저번 달에 이용한 통화의 개수 N이 주어진다. N은 20보다 작거나 같은 자연수이다. 둘째 줄에 통화 시간 N개가 주어진다. 통화 시간은 10,000보다 작거나 같은 자연수이다. www.acmicpc.net [문제] 동호는 새악대로 T 통신사의 새 핸드폰 옴머나를 샀다. 새악대로 T 통신사는 동호에게 다음 두 가지 요금제 중 하나를 선택하라고 했다. 영식 요금제 민식 요금제 영식 요금제는 30초마다 10원씩 청구된다. 이 말은 만약 29초 또는 그 보다 적은 시간 통화를 했으면 10원이 청구된다. 만약 30초부터 59초 사이로 통화를 했으면 20원이 청구된다. 민식 요금제는 60초마다 1..
1. 2차원 배열이름의 포인터 형 1. 1차원 배열이름의 포인터 형과 2차원 배열이름의 포인터 형 int arr[10]과 같은 1차원 배열이름 arr의 포인터 형은 int형 포인터이다. 그리고 앞서 int* parr[20]의 parr이 int **형 포인터임을 배웠다. 따라서 2차원 배열의 이름이 더블 포인터 형이라는 오해를 절대로 해서는 안 된다. 2. 2차원 배열이름이 가리키는 것들은? int arr2d[3][3]과 같은 2차원 배열에서, 배열이름 arr2d가 가리키는 것은 인덱스 기준으로 [0][0]이다. 더하여 2차원 배열의 경우에는 arr2d[0], arr2d[1], arr2d[2]도 의미를 갖는데, 각각 1행 2행 3행의 첫 번째 요소를 가리킨다. 이처럼 arr2d와 arr2d[0]의 출력 값..
1. 포인터의 포인터에 대한 이해 1. 포인터 변수를 가리키는 이중 포인터 변수 (더블 포인터 변수) 포인터 변수는 종류에 상관없이 무조건 주소 값 저장하는 변수이다. 포인터 변수도 메모리 공간에 할당이 되는 변수인데, 이를 대상으로 &연산이 가능하며 이 때 반환되는 주소 값은 'double 포인터 변수'에 저장이 가능하다. "ptr = &num" 이고 "double ** dptr = &ptr" 이면 *dptr은 변수 ptr을 의미하고 **dptr은 변수 num을 의미한다. int main(void) { double num = 3.14; double* ptr = # double** dptr = &ptr; double* ptr2; printf("%9p %9p\n", ptr, *dptr);//둘 다 ..
1. 다차원 배열의 이해와 활용 1. 다차원 배열을 대표하는 2차원 배열의 선언 int arr1[3][4]; -> 세로3, 가로 4인 int형 2차원 배열 int arr2[2][6]; -> 세로2, 가로 6인 int형 2차원 배열 [0][0] [0][1] [0][2] [0][3] [1][0] [1][1] [1][2] [1][3] [2][0] [2][1] [2][2] [2][3] TYPE arr [세로길이][가로길이]; sizeof(arr1)의 결과 : 3*4*4 = 16 2. 2차원 배열의 메모리상 할당의 형태 우리가 사용하는 컴퓨터 메모리는 2차원 구조가 아니다. 이는 메모리 주소 값을 통해 알 수 있다. 우리가 사용하는 메모리의 주소 값은 다음과 같이 1차원적 구조이다. " 0x1001번지, 0x10..
도전 1 Q) 길이가 10인 배열을 선언하고 정수를 입력 받아서, 홀수 짝수를 구분 지어 출려가는 프로그램을 작성해보자. 일단 홀수부터 출력하고 나서 짝수를 출력하도록 하자. 10개의 정수는 main함수 내에서 입력 받고, 홀수 짝수 함수를 출력하는 함수를 각각 정의해서 두 함수를 호출하는 방식으로 프로그램을 완성하자. [실행의 예] 10개 숫자 입력: 1,2,3,4,5,6,7,8,9,10 홀수 출력: 1,3,5,7,9 짝수 출력: 2,4,6,8,10 #define _CRT_SECURE_NO_WARNINGS #include /*길이가 10인 배열에 정수 입력 받고 짝수, 홀수 따로 출력하는 함수 만들어 호출*/ void Even(int param[]) { int i = 0; printf("짝수 출력: "..
1. 함수의 인자로 배열 전달하기 *함수 호출 시 배열을 통째로 전달하는 방법은 없다. 배열을 통째로 넘겨받으려면 매개변수로 배열을 선언할 수 있어야 하는데 이는 불가능하다. 대신에 함수 내에서 배열에 접근할 수 있도록 배열의 주소 값을 전달하는 것은 가능하다. 1. 배열을 함수의 인자로 전달하는 방식 함수의 매개변수는 포인터 변수로 선언되어야 한다. void ShowArrayElem(int* param, int len) { int i; for (i = 0; i < len; i++) { printf("%d", param[i]); } printf("\n"); } int main(void) { int arr1[3] = { 1,2,3 }; int arr2[5] = { 4,5,6,7,8 }; ShowArrayE..