Security ★ Development(154)
-
함수 2
문제는 더블릿 8 함수에 있는 bpalin입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/bpalin/bpalin.php?pname=bpalin 1에서 100000사이의 수를 이진수로 바꿨을 때 그 이진수가 회귀수이면 해당 숫자를 출력하는 문제입니다.간단하게 1에서 100000까지 for문을 돌면서 값을 2진수로 바꿉니다. 2진수로 바꾼 값은 하나씩 char형 배열에 넣어주고 넣어준 크기를 카운트 한 다음에 처음과 끝, 처음+1과 끝-1, 처음+2와 끝-2를 하나씩 비교해주며 같지 않은 경우가 하나라도 있으면 회귀수가 아니라고 판단하고 넘어갑니다. 모든 비교 결과 전부 같으면 회귀수이므로 출력해주고 다음 값을 검사하면됩니다.
2015.01.07 -
dynamic programming 5
문제는 더블릿 21 dynamic programming에 있는 gc입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/gc/gc.php?pname=gc 입력으로 주어진 수 n을 1부터 n*2까지 차례대로 원 위에 쓰고 서로 엇갈리지 않게 선을 그을 수 있는 전체 경우의 수를 구하는 문제입니다. 이 문제에는 규칙이 있습니다. n=3일 때를 보면 1-2를 그었을 때 남은 숫자는 4개로 이를 서로 엇갈리지 않게 그을 수 있는 방법은 n이 2일 때와 같습니다. n=4일 때는 1-2를 그었을 때 남은 숫자가 6개로 이는 n=3일 때의 모든 경우의 수와 같습니다.즉 다음 경우의 수를 구하는데 이전 n값의 답을 구할 필요가 있습니다. 이 규칙을 보면 1->? 로 가는 선을 구하는데 ..
2015.01.06 -
배열 1
문제는 더블릿 5 배열에 있는 coci_modulo입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/coci_modulo/coci_modulo.php?pname=coci_modulo 배열에 속해있는 만큼 간단한 문제입니다.우선 받은 모든 수를 42로 나눠 나머지를 저장합니다.그리고 새로운 배열을 생성하여 첫 번째 나머지를 넣고 모든 수를 돌면서 해당 나머지가 새로운 배열에 있으면 넣지 않고 카운터를 하지 않으며 새로운 배열에 없는 나머지인 경우 그 나머지를 넣고 카운터를 합니다. 나머지는 0이 나올 수도 있으므로 새로운 배열은 0으로 초기화하면 안됩니다.
2015.01.04 -
graph, dfs 2
문제는 더블릿 16 graph, dfs에 있는 snail_trails입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/snail_trails/snail_trails.php?pname=snail_trails 맵에서 갈 수 없는 곳이 있을 때 상하좌우로 중복되지 않고 끊기지 않기 최대한 많이 움직일 수 있는 거리를 찾는 것이 목적입니다. 문제 그대로 한번 방향을 잡고 막힐 때까지 가면서 카운터를 세고 가장 높은 카운터를 출력해주면 됩니다.일단 문제의 맵을 입력받습니다. 그리고 시작점부터 우측 혹은 아래로 이동을 시작하는데 막다른 곳이 나오면 방향을 바꾸고 지나갔던 곳이 나오면 종료하는 재귀를 사용합니다.종료 조건이 지나간 곳을 만났을 때 입니다.다음 위치는 현재 방향의 한..
2015.01.04 -
graph, dfs 1
문제는 더블릿 16 graph, dfs에 있는 dfs입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/dfs/dfs.php?pname=dfs 그래프가 주어졌을 때 시작 정점부터 시작해서 dfs 방식으로 모든 정점을 돌며 각 정점을 출력하는 문제입니다. 문제를 풀기위해 가장 먼저 생각나는건 입력 예처럼 입력이 주어졌을 때 앞 -> 뒤로 갈 수 있는 것 뿐만 아니라 뒤 -> 앞으로도 방향성을 알 수 있어야 하고 이전에 방문했던 정점의 위치를 표시해야한다는 것입니다. 그러기 위해 2차원 배열 하나와 1차원 배열 하나씩 선언해 줍니다.1차원 배열은 해당 정점을 인덱스로 보고 방문은 했는지 표시하며 2차원 배열은 앞 -> 뒤, 뒤 -> 앞의 방향성을 표시합니다. 입력이 끝이 아..
2014.12.30 -
윈도우 커널 드라이버 개발 디버깅 환경 구축
윈도우 커널 드라이버(NDIS) 개발을 하기위한 디버깅 환경 구축 과정을 정리하려합니다. 찾아보면 옛날 ddk와 순수 windbg를 이용한 디버깅 환경이 많이 나옵니다. 저는 최신 비주얼 스튜디오인 2013과 윈7, 그리고 vmware를 이용한 디버깅 환경을 설명하겠습니다. 이렇게 구축을 해놔도 어떤 윈도우 프로그래밍 혹은 웹 프로그래밍보다도 개발 속도가 느립니다. 안드로이드보다도 느리다고 자부할 수 있습니다. 드라이버 개발에 특별한 디버깅 환경이 필요한 이유는 커널에 수정, 작업을 반영하기 때문에 운영체제가 불안정해질 수 있습니다. 본래의 노트북이나 데스크탑에 설치된 운영체제에 그대로 디버깅을 수행하면 개발한 드라이버에 문제가 있을 시 컴파일 에러, 런타임 에러만 내놓고 끝나는게 아니라 해당 운영체제를..
2014.12.26