본문 바로가기

분류 전체보기78

[C/C++] malloc (stdlib.h에 선언되어 있음.) malloc(메모리 크기); void* memcmp(size_t _Size); 할당한 메모리의 주소 반환 함수 호출 시 할당하고자 하는 메모리의 크기를 바이트 단위로 전달받고, 해당 크기만큼 메모리를 할당한다. 그리고 할당한 메모리의 시작 주소값을 반환한다. 할당된 메모리는 초기화 되지 않았을 수도 있다. 할당한 메모리는 반드시 free로 해제해줘야 한다. 동적할당을 할 때 사용된다. 인자 Size 메모리 블록의 크기 (바이트 단위) 리턴값 메모리 할당에 성공하였을 경우, 할당한 메모리의 시작 주소값을 반환한다. 반환형이 void* 이기 때문에 사용하려는 타입으로 캐스팅을 해줘야 한다. 메모리 할당에 실패하였을 경우, NULL 포인터를 반환한다. 예시1 #includ.. 2019. 11. 7.
[C/C++] memcmp (string.h에 선언되어 있음.) memcmp(포인터1, 포인터2, 크기); int memcmp(void* ptr1, void* ptr2 size_t _Size); 결과에 따른 정수 값을 리턴 두 개의 메모리 블록을 비교한다. ptr1이 가리키는 처음 _Size 바이트의 데이터와 ptr2 가 가리키는 처음 _Size 바이트의 데이터를 비교하여 이들이 같다면 0 을 리턴하고 다르다면 0 이 아닌 값을 리턴한다. 이 때 리턴되는 값은 아래를 참고. 인자 ptr1 메모리 블럭을 가리키는 포인터이다. ptr2 메모리 블럭을 가리키는 포인터이다. _Size 비교할 바이트의 수를 나타낸다. 리턴값 두 개의 메모리 블록의 관계에 따라 아래와 같이 정수 값을 리턴한다. 만일 두 메모리 블록이 정확히 같다면 0 을 .. 2019. 11. 2.
[C/C++] memset (string.h에 선언되어 있음.) memset(포인터, 설정한 값, 크기); void *memset(void *_Dst, int _Val, size_t _Size); 값 설정이 끝난 포인터를 반환 memset 함수는 메모리의 내용을 원하는 크기만큼 특정값으로 설정할 수 있다. 인자 _Dst 설정한 포인터의 주소로, void* 형으로 변환되어서 전달된다. _Val 설정한 값으로, int 형 데이터를 인자로 받는다. _Size 설정할 크기, 포인터부터 몇 바이트인지를 나타낸다. 리턴값 _Dst 이 리턴된다. 예시1 #include #include #include int main() { char* ptr = (char*)malloc(sizeof(char) * 10); memset(ptr, 65, sizeo.. 2019. 11. 1.
[C/C++] memcpy (string.h에 선언되어 있음.) memcpy(목적지포인터, 원본포인터, 크기); void *memcpy(void *_Dst, void const *_Src, size_t _Size); 목적지 포인터를 반환 memcpy 함수는 메모리의 내용을 다른 곳으로 복사하는 함수이다. 인자 _Dst 데이터가 복사될 곳의 주소로, void* 형으로 변환 되어서 전달된다. _Src 복사할 데이터들의 주소로, void* 형으로 변환 되어서 전달된다. _Size 복사할 데이터의 바이트 수 이다. 리턴값 _Dst 이 리턴된다. 예시 #include #include int main() { int arr1[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int arr2[10] = { 0, }; fo.. 2019. 11. 1.
[BOJ 1629] 곱셈 https://www.acmicpc.net/problem/1629 불러오는 중입니다... 위 문제는 주어진 A, B, C에 대해 A^B % C를 구하는 문제이다. 간단하게 반복문을 B번 돌리면서 결과값에 A를 곱하고 C로 나눈 나머지를 구하면 될 거같은 문제이다. 바로 아래 코드처럼 말이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include #define ull unsigned long long int main() { int a,b,c; scanf("%d %d %d", &a,&b,&c); ull result = 1; for(int i = 0; i 2019. 3. 17.
[BOJ 1964] 오각형, 오각형, 오각형… https://www.acmicpc.net/problem/1964 1964번: 오각형, 오각형, 오각형… 첫째 줄에 N(1≤N≤10,000,000)이 주어진다. www.acmicpc.net 위 문제는 N단계 후 오각형의 점이 몇 개인지 알아내는 문제이다. 위 문제를 풀기 위해 저는 두 가지 방법으로 나누어 생각했습니다. ---------------------------------------------------------------------- 1). 외곽의 점은 몇 개인가 2). 그 외의 점들, 즉 안쪽에 있는 오각형의 점들은 몇 개인가. ---------------------------------------------------------------------- 1)번의 경우 각 단계마다 오각형의 각.. 2019. 3. 17.
에라토스테네스의 체(Eratosthenes' sieve) 에라토스테네스의 체(Eratosthenes' sieve) 1부터 N사이의 모든 소수와 소수가 아닌 수를 찾는 방법이다. 소수는 1과 자기 자신만을 약수로 가지는 수이다. 쉽게 말해 소수는 자기 자신과 1로 밖에 못 나누는 수이다. 이러한 원리를 이용해 배수를 지우면서 소수가 아닌 수를 배제해 나가는 방법이다. 즉, 1)--- 2의 배수인 4, 6, 8, 10, 12..........지움 3의 배수이면서 지워지지 않은 수인 9, 15, 21.......지움 . . . . . . 2)--- 이러한 과정을 반복하며 소수가 아닌 수를 지워나간 후 마지막까지 지워지지 않은 수인 소수를 찾는 방법이다. ----- 예를 들어 1 ~ 50 사이의 소수를 찾는 다면, 1은 소수가 아니므로 먼저 배제하고 2의 배수들을 배.. 2019. 3. 17.
[BOJ 1978] 소수 찾기 https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 위 문제를 풀기 위해서는 '에라토스테네스의 체'를 알고 있다면 쉽게 풀 수 있다. 위 알고리즘을 통해 소수를 찾은 후 N개의 수를 입력 받으며 소수인지 아닌지 확인하면 된다. '에라토스테네스의 체'의 자세한 내용은 아래 URL을 통해 볼 수 있다. https://ladun.tistory.com/10?category=323065 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 .. 2019. 3. 16.
[BOJ 1331] 나이트투어 https://www.acmicpc.net/problem/1331 불러오는 중입니다... 이 문제를 풀기위해서는 3가지 조건을 만족시키면 된다. 1. 나이트의 이동방식처럼 움직였는지 2. 마지막 지점에서 처음 지점으로 갈 수 있는지 3. 모든 지점을 지났는지 사실 3번은 따로 코드로 짤 필요는 없다. 이 문제에서는 총 36줄로 움직이는 위치가 주어지고, 모든 위치가 겹치지 않는다면 모든 판을 지난 것이다. 1번은 바로 전의 위치와 현 위치의 차이가 나이트가 움직이는 방식인지 확인하면 된다. 즉, 알파벳 부분의 차의 절대값이 2일 때 숫자 부분의 차의 절대값이 1이거나, 이 반대의 경우 성립한다. 2번은 처음의 입력받은 것을 저장해뒀다가 마지막 위치와 비교하여 확인하면 된다. 두 위치의 차가 나이트의 이동.. 2019. 3. 10.