codingdog의 등록된 링크

키자드에 등록된 총 17개의 포스트를 확인하실 수 있습니다.

Tistory

c언어 memcpy vs memmove : 메모리를 바이트 단위로 복사한다

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

Tistory

java hashCode vs identityHashcode : 이 둘은 무엇이 다를까요?

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

Tistory

c언어 단축 평가 : 언제 조건을 볼 필요가 없을까?

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

Tistory

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

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

Tistory

c언어 time 함수 : 현재 시간을 초단위로 리턴한다.

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

Tistory

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

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

Tistory

대우 명제 : 언제 이 도구를 증명하기 위해 쓸까요?

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

Tistory

재귀 함수 : 자기 자신을 호출한다.

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

Tistory

외판원 문제 : 팩토리얼을 지수 복잡도로 낮춰보자

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

Tistory

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

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

Tistory

c++ bitset (비트셋) 예제 : 쉽게 이해해 봅시다.

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

Tistory

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

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

Tistory

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

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

Tistory

c언어 비트 연산자 : ps를 하려면 알고 넘어갑시다.

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

Tistory

java 빈 문자열 체크 : length vs equals vs isEmpty

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

Tistory

동적 배열 : expand 연산을 이해하는 것이 핵심이다.

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

Tistory

java parseint vs valueof : 어떤 것을 리턴할까?

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

1