분류 전체보기18 [TIL]2022/02/26 1. 백준 1043 거짓말 전략: union find을 사용해서 같은 파티에 참석할 사람들을 한 집합으로 묶는다. 묶을 때 숫자가 작은 사람이 parent가 되게 한다. 그러면 parent가 다르다면 같은 그룹에 속하지 않는다는 뜻임으로, 진실을 아는 사람들의 parent를 각 파티에 참가한 그룹의 parent와 비교해서 같으면 진실을 말하고 다르면 거짓말을 하면 된다. union-find: 1. union 함수 (실제 구현할 때는 C에서 union이 예약어이기 때문에 merge로 함) merge함수는 두 노드가 같은 그룹에 있도록 합치는 함수. 배열의 인덱스 i 는 노드의 값을 나타내고 배열[i] 값은 parent 값을 나타낸다. merge함수는 두 노드가 같은 parent 값을 가지도록 변경한다. 같.. 2022. 2. 26. [TIL]2022/02/25 1. C 동적 할당된 배열의 크기를 구하는 법? #include #include int main() { int* arr = (int*)malloc(sizeof(int)*4); int arr2[4]; printf("%ld\n", sizeof(arr)); printf("%ld\n", sizeof(arr2)); printf("%ld\n", sizeof(arr)/sizeof(arr[0])); printf("%ld\n", sizeof(arr2)/sizeof(arr2[0]); return 0; } output: 8 16 2 4 arr는 동적 할당, arr2는 그냥 할당. 배열에서 길이를 구할 때는 sizeof(Array) / sizeof(Element)를 이용했었죠? 근데 이건 동적 할당이 아닌 일반 stack 배.. 2022. 2. 25. [TIL]2022/02/22 1. 백준 1157 단어 공부 가장 많이 고민한 부분 입력을 어떻게 받을 것인가? - 입력 받는 문장이 몇 글자인지 안알려준다. 처음에는 sentence[1000000]처럼 문자열을 통채로 받고, 반복문을 통해서 가장 많이 존재하는 문자를 찾으려고 했었다. 조건에서 최대 크기가 1,000,000라고 하지만 sentence[1000000]라고 메모리를 잡으면 틀렸다고 한다. 아마도 무식하게 많이 잡아서 그런듯. 그래서 고민하다가 애초애 문제를 해결하는데 필요한 데이터는 문자의 개수였고, 문자열 전체를 배열에 저장할 필요가 없다는 것을 깨달았다. 그래서 문자 하나하나를 받아서 해당 문자의 개수를 +1 하는 전략으로 수정했다. 이렇게 하면 문장의 글자수에 구애받지 않을 수 있다(한 문자 단위로 입력을 받으니까.. 2022. 2. 22. [TIL]2022/02/18 절대경로와 상대경로 절대경로는 웹페이지나 파일이 가지는 고유 경로를 말한다. http://www.google.com/ 또는 C:\users\document\untitled.jpg 처럼 우리가 자주 봐왔던 것들을 절대경로라고 한다. 상대경로는 '현재의 위치'를 기준으로 가리키는 경로다. 현재 디렉토리가 C:\users\document\justfile 라고 한다면, 우리는 상위폴더인 document를 절대 경로로는 C:\users\document 이렇게 표현할 것이다. 그런데 상대 경로로는 ../ 라고 표현한다. 상대 경로 표현에서 '/' 는 root(최상위 폴더) './' 은 현재 디렉토리 '../' 는 상위 디렉토리를 의미한다. 가끔 ../로 상위 디렉토리에 접근하고 그곳에 있는 파일을 찾으려고 해도 실.. 2022. 2. 18. 이전 1 2 3 4 5 다음