-
0x03.Python Challenge 30x.Wargame/Python Challenge 2017. 6. 1. 22:02
0x03.Python Challenge 3 문제 주소 : http://www.pythonchallenge.com/pc/def/equality.html 전역도 했고, 6월도 왔으니 3번 문제를 풀어보자 ??! 문제를 읽어보니, 소문자의 좌우에 큰덩치가 셋 씩 있단다. 머 해석해보면 소문자를 두고 양 옆에 대문자가 3개씩 있나보다. 이해를 하자말자 정규 표현식으로 풀어야 되는 문제구나 하는 감이 왔다. 역시 소스코드에는 다음과 같이 떡하니 문자들이 블라블라(?) 적혀있다. [a-z] 소문자 a에서 z까지 중 하나의 값을 뜻함 [A-Z]{3} 대문자 A에서 Z사이의 하나의 값이 3번 연속으로 있음을 뜻함 [0-9]{2~5} 숫자가 2~5번 반복됨 ^abc abcde, abcfx와 같이 abc로 시작하는 단어를..
-
0x02.Python Challenge 20x.Wargame/Python Challenge 2017. 5. 9. 08:48
0x02.Python Challenge 2 문제 주소 : http://www.pythonchallenge.com/pc/def/ocr.html 오늘은 챌린지 2번문제를 풀어볼 것이다. 이번에는 좀 많이(??) 직관적인 힌트를 준다. 페이지 소스를 보라고 하니 보도록 하자. 다음과 같이 주석으로 블라블라블라블라하고 적혀있다 ㄷㄷ. 맨 윗부분을 보면 중간중간에 단어가 숨어있다고 하는 걸로 보아 a를 검색해봤는데, 알아보기 힘든 긴 주석사이에 a라는 글자가 있었다. 알파벳만을 뽑아내면 답이 나올것만 같은 느낌적인 느낌이다. 긴 주석을 그대로 파이썬에 옮기려고 했으나 위 사진에서 볼 수 있듯이 문장구조로 되어 있어 하나의 스트링으로 변수저장이 불가능하다. 그래서 생각한 방식이 텍스트 파일로 저장한 뒤, 파일을 부..
-
0x01.Python Challenge 10x.Wargame/Python Challenge 2017. 5. 5. 15:45
0x01.Python Challenge 1 문제 주소 : http://www.pythonchallenge.com/pc/def/map.html 본격적으로 1번 문제를 풀어보겠다. 공책에 알파벳이 적혀있는데, 저것이 힌트인듯하다. K->M O->Q E->G 공통적인 특징을 보면 두 단어 사이에는 2칸이 차이가 난다는 사실을 알 수 잇다. K, L, M O, P, Q E, F, G 보라색 암호문의 알파벳을 2칸씩 뒤로 미루는 방식을 사용하면 암호를 풀수 있는 듯 하다. 아래와 같이 코드를 작성하였다. 사용한 함수는 translate()와 maketrans()이며, 이는 'string translate in python'이라는 문장으로 구글링을 하여 찾았다.
-
0x00.Python Challenge 00x.Wargame/Python Challenge 2017. 5. 3. 20:04
0x00.Python Challenge 0 문제 주소 : http://www.pythonchallenge.com/pc/def/0.html 파이썬 챌린지의 첫 문제이다. 이건 딱봐도 답이 나오는 너무 쉬운(?) 수준의 문제였다.말그대로 그냥 2e38을 구하면 된다. 여기서 주의해야 할 점이 있다. for문을 돌릴때 i의 초기값이 0이기 때문에 위와 같이 range값을 38로 해버리면 2의 39승을 구하는 꼴이 된다. 실제로 저 값을 주소에 입력하면 위와 같이 힌트를 준다. answer 값에서 2를 나누어 주면 문제가 원하는 해답이 나온다. 위와 같이 더 쉽게 구할 수도 있다!!!
-
0x06.탐색 알고리즘(4):해쉬법0x.알고리즘 2017. 3. 18. 13:29
4. 해시법 이 방식은 기존의 탐색 알고리즘들과 전혀 다르게 설계되는데, 가장 빠른 속도의 알고리즘이라고 불리기도 한다. 앞서 포스팅한 알고리즘들은 키 값의 지속적인 비교를 통해 탐색 범위를 좁히는 방식이다. 비교라는 것을 잘 생각해보면 범위를 정확히 반으로 줄일 때 가장 효율이 좋다. 하지만 범위를 모호하게 비교해버리면 생각했던 것보다 많은 시간이 소요될 수 있다는 단점이 있다. 해시법은 그 전 방식들과 다르게 직설적이다. 키 값을 1에서 10까지 한정했다고 가정해보자. 가장 빠른 탐색 방법은 1부터 10을 첨자로 하는 배열을 만들어 바로 그 값을 참조하는 것이다. 물론 한정된 범위내에서만 사용이 가능하지만, 조금만 손을 봐주면 충분히 활용할 수 있다. 해시법은 키 값을 파라미터로 사용하는데, 어떤 함..
-
0x05.탐색 알고리즘(3):이진 탐색트리0x.알고리즘 2017. 3. 4. 17:31
3. 이진 탐색트리 이진트리는 다음의 성질중 하나를 반드시 만족한다.ⓐ 자식을 갖지 않음ⓑ 왼쪽 자식 하나만 가짐ⓒ 오른쪽 자식 하나만 가짐ⓓ 왼쪽과 오른쪽 자식 모두를 가짐 이진 탐색 트리의 개념은 왼쪽과 오른쪽으로 나뉜다. 왼쪽에 있는 자식과 그 자식의 자식들이 가지고 있는 데이터들은 정점의 데이터(그림의 15)보다 값이 작고, 오른쪽에 있는 자식과 그 자식의 자식들이 가지고 있는 값들은 정점보다 크다. 말로 표현하려면 여러운데, 왼쪽의 그림으로 보면 조금 쉬울 수 있다.루트의 왼쪽 자식의 값은 루트 값인 15보다 작은 12이며, 오른쪽은 더 큰 값인 19이다. 또한 12(왼쪽 서브트리)의 자손들의 값은 9, 13, 14로 루트 값인 15보다 작다. 정점(루트)의 입장에서보면 왼쪽 서브트리의 값들은 ..
-
0x00.파이프라인(Pipeline)0x.Pwnable 2017. 2. 26. 18:33
파이프라인(Pipeline) 명령어 파이프라인(instruction pipeline)은 명령어를 읽어 순차적으로 실행하는 프로세서에 적용되는 기술로, 한 번에 하나의 명령어만 실행하는 것이 아니라 하나의 명령어가 실행되는 도중에 다른 명령어 실행을 시작하는 식으로 동시에 여러 개의 명령어를 실행하는 기법이다. 파이프라인을 가끔, 한 제품을 만들때 여러 개의 제품이 동시에 조립공정되는 과정에 비유하기도 한다. 하나의 명령어는 여러 개의 단계로 나눌 수 있는데, 이때 하나의 명령어를 처리할 때까지 다음 명령어가 처리되지 않고 기다리게 된다면, 명령어의 특정 단계를 처리하는 동안 다른 단계를 처리하는 부분은 아무 작업도 하지 않게 된다. 이때 파이프라인을 사용하면 한 명령어의 특정 단계를 처리하는 동안 다른 ..
-
0x04.탐색 알고리즘(2):이진 탐색0x.알고리즘 2017. 2. 25. 13:12
2. 이진 탐색 선형탐색과 마찬가지로 이진탐색에서도 배열에 레코드를 삽입하는 방법을 사용하지만, 요소 값의 크기 순으로 삽입한다는 점이 다르다. 다시 말해, 배열의 데이터가 크기순으로 정렬된다.(아래의 배열은 데이터 값이 작은 것부터 순차대로 정렬되도록 하였다) 위 배열에서는 low에서 high까지의 요소들이 탐색 대상이 되는데, low와 high라는 변수로 범위를 지정함으로써 탐색 범위를 제한할 수 있다. 젤 먼저 low와 high사이에 위치한 정중앙 데이터값인 mid와 찾으려는 데이터의 값을 비교한다. 찾는 값이 mid보다 작다면 mid 이후의 요소들은 탐색하지 않아도 되고, 반대로 mid보다 값이 크다면 mid 이전 요소들은 탐색할 필요가 없기 때문이다. 이진탐색에서는 다음의 두 알고리즘이 사용된다..