codingdog의 등록된 링크

 codingdog로 등록된 티스토리 포스트 수는 17건입니다.

c언어 memcpy vs memmove : 메모리를 바이트 단위로 복사한다 [내부링크]

메모리를 바이트 단위로 복사할 때, c나 c++ 에서는 memcpy와 memmove를 많이 사용합니다. 물론, pod 타입이여야 한다는 전제가 깔리긴 하지만요. 이 둘은 어떻게 쓸까요? c언어 memcpy나, memmove는 1번째 인자가..

재귀 함수 : 자기 자신을 호출한다. [내부링크]

뜬금없이 C언어 시간에 배우셨을 재귀함수를 왜 자료구조 카데고리에 쓸까요? 사실, 재귀 호출은, 스택을 이용한 것이거든요. 이번 시간에는 간단하게 팩토리얼 함수와 피보나치 함수 정도를 재귀로 어떻게 구현하..

대우 명제 : 언제 이 도구를 증명하기 위해 쓸까요? [내부링크]

생각난 김에, 간단하게 글을 써 보도록 하겠습니다. 수학 시간에 대우 명제를 써서 증명하는 것은 많이 해 보셨을 겁니다. 이런 걸 대체 ps 문제를 푸는 데 어떻게 쓰는 걸까요? 백준 12858번은 문제가 짧습니다...

링크드 리스트 : 왜 순회 시간이 배열보다 오래 걸릴까요? [내부링크]

리스트와 배열의 차이점은 면접에서 자주 나오는 질문 중에 하나입니다. 저에게 메일로 질문이 들어온 것 중 하나는, 순회 속도가 어떻게 차이가 나느냐였습니다. n이 작을 때는 별 차이가 없을 수도 있습니다. 하..

c언어 time 함수 : 현재 시간을 초단위로 리턴한다. [내부링크]

time.h에 들어있는 time 함수는 어떻게 쓰일까요? 이 함수는 1970년 1월 1일 0시 0분 0초부터, 현재 시간까지 경과된 초를 리턴합니다. 예를 들어서 현재 시간이 1970년 1월 2일 0시 0분 0초라면, 86400이 리턴될..

냅색 알고리즘 문제 : 가방에 어떻게 넣어야 이득이 최대일까? [내부링크]

12번째 글은, 냅색 알고리즘 문제입니다. 이것도 꽤 여러 종류가 있는데요. 쪼갤 수 있는 물건이냐, 그렇지 못하냐에 따라서, 그리디로 접근을 할 수 있는지, 아니면 dp로 접근해야 하는지가 나뉩니다. 저는 0/1..

c언어 단축 평가 : 언제 조건을 볼 필요가 없을까? [내부링크]

단축평가는, 계산을 하는 도중에 이미 결과값이 확정된 경우에, 나머지 계산 과정을 생략하는 것입니다. 예를 들어서 A or B or C라는 수식이 있다고 해 봅시다. 만약에 A가 참이라면 어떨까요? B나 C가 참이던 거..

java hashCode vs identityHashcode : 이 둘은 무엇이 다를까요? [내부링크]

Java hashCode랑 identityHashCode의 차이점이 무엇일까요? 그에 대해서 답을 하기 전에, 간단한 실험을 하고 넘어갑시다. identityHashCode는 객체가 다르면, 무조건 다른 값을 리턴할까요? 즉, 이 메서드의 리턴..

외판원 문제 : 팩토리얼을 지수 복잡도로 낮춰보자 [내부링크]

우리가 흔히 말하는 TSP, 외판원 문제는, 어떠한 도시에서 출발해서, 모든 도시를 방문하고 다시 출발점으로 돌아왔을 때, 최단 경로의 길이를 구하는 문제입니다. 이것을 단순하게, 모든 경우를 따져가면서 푼다..

부동 소수점 : 왜 0.1을 저장하면 오차가 생길까요? [내부링크]

부동 소수점은, 가수부와 지수부로 나누어서 저장을 합니다. 즉, (a)*2^b꼴로 저장을 하는데요. 이 때, a는 1보다 크거나 같고, 2보다 작은 실수입니다. 즉, (1.xxx)*2^b 꼴로 저장을 한다는 겁니다. 여기까지는..

c++ bitset (비트셋) 예제 : 쉽게 이해해 봅시다. [내부링크]

이번에는 c++에 있는 bitset 이라는 친구에 대해서 잠깐 알아볼 거에요. 보통, 비트 연산자를 이용해서 상태를 관리할 때, & 연산자를 쓰고 <<를 쓰고, >>를 쓰고, | 같은 것을 조합해 가면서 쓰셨을 거에요. 익숙..

dfs 심화편 : 깊이 우선 탐색의 단점을 어떻게 보완하는가? [내부링크]

dfs, 그러니까 깊이 우선 탐색의 단점은 크게 2가지입니다. 해가 없는 경로에 깊이 빠진다. 그렇기에 유한 시간 내에 끝나지 않을 수도 있다. 그리고, 해를 구했을 때, 그것이 최적이 아닐 수도 있다. 이 2가지 때..

c언어 비트 이동 연산자 (<<, >>) : 어떤 것을 조심해야 할까요? [내부링크]

어제, 비트 연산자 내용을 하면서 이런 이야기를 했을 거에요. >>와 <<는 다음에 정리하겠다. 사실, 그렇게 간단하지는 않습니다. 글 하나를 따로 빼야 할 정도로 내용이 어느 정도 있어요. 오늘은 이 둘의 동작에..

c언어 비트 연산자 : ps를 하려면 알고 넘어갑시다. [내부링크]

ps를 많이 하시다 보면, 비트 연산자를 써야 하는 경우가 종종 있습니다. 오늘은 c언어에서 어떤 식으로 비트 연산자를 많이 쓰는지 배워보도록 합시다. 먼저, 왼쪽 이동과, 오른쪽 이동 연산을 알아야 하는데요...

java 빈 문자열 체크 : length vs equals vs isEmpty [내부링크]

java에서 빈 문자열을 비교할 때에는 어떤 메서드를 써야 할까요? length? 아니면 equals? 아니면 isempty? 이 셋이 어떻게 동작하는지 비교를 해 봅시다. 만약에 퍼포먼스가 차이가 난다면 어디서 차이가 나는지..

동적 배열 : expand 연산을 이해하는 것이 핵심이다. [내부링크]

보통 Dynamic array, 동적 배열이라고 하면 크기가 변하는 배열을 의미합니다. c++의 STL에서는 vector가, 그리고 Java에서는 ArrayList가 있어요. 그런데, push_back이나 add를 100만번, 200만번을 해도, 실제로..

java parseint vs valueof : 어떤 것을 리턴할까? [내부링크]

java에서, String을 Integer, 혹은 int형으로 변환하기 위해서 각각 valueOf라던지, parseInt를 많이 사용하는 편입니다. 이들은 내부적으로 어떻게 동작할까요? parseInt를 먼저 봅시다. 615번째 줄에서 같은 이..