https://www.acmicpc.net/problem/1932 [ 문제 풀이 법 ]다이나믹 프로그래밍은 bottom-up방식으로 밑에서 위로 올라가는 방식이다. 분할정복법과 대조된다.문제풀이법을 살펴보자. 임의의 원소까지의 최대값은 어떻게 될까? 위 예제에서 3행 2열의 값인 1을 임의의 원소로 잡고 여기까지의 최대값은 무엇일까? 최대값을 배열 DP에 저장한다.아마 대답을 이렇게 미룰 수 있을 것이다. 3행 2열을 오기 바로 전의 최대값 + 3행 2열의 값.의문은 3행 2열 바로 전까지의 최대값을 바로 알 수 가없다. 그런데, (1, 1)부터 시작하면, 최대값을 하나씩 쌓아갈 수 있다. 그래서 다이나믹 프로그래밍이 bottom-up방식의 문제해결법인 것이다.3행 2열 바로 전까지의 최대값의 후보는 2..
[10장. 64비트 모드로 전환하자.]를 읽다보니, kReadCPUID()함수를 어셈블리어로 작성했는데, 포인터를 다루더군요. 한번 정리할 필요가 있다고 생각되어 어셈블리어에서 포인터를 어떻게 다루는지 정리해보겠습니다. int main(){...DWORD dwEAX, dwEBX, dwECX, dwEDX; kReadCPUID(0x80000001, &dwEAX, &dwEBX, &dwECX, &dwEDX);..} 현재는 32비트 보호모드 상태이고, main문에서 CPU가 IA-32e모드를 지원하는지 알아보기 위한 함수(kReadCPUID)를 호출합니다.kReadCPUID는 어셈블리어로 작성되었습니다. 1 global kReadCPUID23 SECTION .text45 kReadCPUID:6 push ebp7 ..
https://www.acmicpc.net/problem/2146 [ 나의 문제 풀이 ]1. 각 섬에 번호 부여 : 이중for문으로 map돌면서 섬 만날 때마다 BFS하면, 각 섬에 번호가 부여됨.2. 거리 측정 후보 선택 : BFS돌면서, 바다와 인접해 있는 지역 좌표를 candidate라는 vector에 저장. 3. 거리 측정 : candidate에 있는 좌표들 끼리 거리측정함. 단, 당연히 다른 섬번호끼리만 좌표를 측정. 거리측정은 ABS(y2-y1) + ABS(x2-x1)으로 구하면 됨. 이 때, 거리 측정할 섬들 사이에, 다른 섬이 있을지 모름. 하지만 괜찮음. 생각해보면, 이 경우는 어차피 최단거리가 될리가 없기 때문임. [ 나의 코드 ]1234567891011121314151617181920..