본문 바로가기

전체 글

(426)
[Algorithm][Python] 백준/BOJ - 9012_괄호 9012 괄호 문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 여러분은 입력으로 주어..
map_join_product zip() 파이썬 내장함수 zip()은 같은 길이의 iterable한 자료형를 같은 인덱스끼리 잘라서 반환해준다. for문을 이용해 다수의 리스트로 부터 값을 가져와서 처리해야 하는 경우 매우 유용히 사용된다. 모든 멤버의 type 변환하기 문제 설명 문자열 리스트를 입력받아, 해당 리스트를 정수형 리스트로 바꾼 값을 리턴하는 함수, solution을 만들어라. 예를들면, mylist가 ['1', '100', '33']인 경우, solution 함수는 [1, 100, 3]을 리턴하면 된다. 제한조건 1) mylist의 길이는 100이하 자연수이다. 2) mylist의 원소는 10진수 숫자로 표현할 수 있는 문자열이다. 즉, 'as2'와 같은 문자열..
sorted_zip 파이썬을 파이썬답게 원본을 유지한채, 정렬된 리스트 구하기 - sorted 파이썬의 sort()함수를 사용하면 리스트의 원소를 정렬할 수 있다. 이때, sort함수는 원본의 멤버 순서를 변경하지 않는다. 따라서 원본의 순서는 변경하지 않고, 정렬된 값을 구하려면 sort함수를 사용할 수 없다. 이러한 경우에는? 일반적인 경우, deep copy 또는 sort 함수를 이용한다. list1 = [3, 2, 1] list2 = [i for i in list1] # 또는 copy.deepcopy list2.sort()list1 = [3, 2, 1] list2 = sorted(list1)def solution(mylist): answer = list(map(list, zip(*mylist))) return ans..
[Algorithm][Python] 백준/BOJ - 10073_제로 10773 제로 문제 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자! 입력 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 쓴다. 정수가 "0"일 경우에 지울 수 있는 수..
Android APK Vuln analysis methodology Android APK Vuln analysis methodology Android APK 취약점 Web/ PC Software 뿐만 아니라 android APK에 대해서도 수많은 취약점이 존재한다. 모바일 OS 시장에서 구글 안드로이드의 독주가 두드러지고 있으며 이러한 모바일 OS 시장에서 안드로이드의 성장은 안드로이드 소프트웨어 발전에도 큰 영향을 주고 있다. 그러나, 안드로이드 소프트웨어는 그 구조상 Reverse Engineering에 취약하게 되어있다. 안드로이드 소프트웨어는 가상머신 위에서 동작하며 이는 자바를 기반으로 작성된 가상머신이다. 이렇게 생성된 software는 하나의 소스코드로 다양한 플랫폼에서 동작 즉, multi-platform 동작이 가능하다는 장점이 존재한다. 그러나 가상머신..
ARM Assembly Arm Assembly ARM (Advanced Risc Machine) x86으로 대표되는 CISC 라인과는 반대로 모바일이 대세가 되며 ARM(RISC) 프로세서도 많이 사용되어 지고 있다. 이번엔 ARM architecture 에 대해서 공부해본다. Thumb mode / Arm mode ARM 과 x86의 가장 큰 차이점은 Thumb 모드의 존재다. ARM 자체가 mobile/embedded 등 PC와는 다른 환경에 맞춰 설계하였기 때문에 저전력이 핵심 기술중 하나였으며, 처음 설계될 당시 임베디드 계열에서는 32bit가 아닌 16bit가 추세였다고 한다. 이러한 여러가지 상황에 맞추기 위해 2가지 모드를 지원하게 되었고 당연 리버싱을 하게 될 때도 이를 고려해야 한다. Thumb mode 레지스..
int_just_ascii 파이썬을 파이썬답게 int(x, base) n진법 으로 표기된 string을 10진법 숫자로 변환하기 base 진법으로 표기된 숫자를 10진법 숫자 출력하라. 입력 입력으로는 공백으로 구분된 숫자가 두개 주어진다. 첫번쨰 숫자는 num 을 나타내며, 두번째 숫자는 base를 나타낸다. 출력 base진법으로 표기된 num을 10진법 숫자로 출력하라. 제한조건 base는 10이하 자연수이다. num은 3000이하 자연수이다. 예시 input output 12 3 5 444 5 12 4 나의 경우, 일단 test_case만 만족하자라는 생각으로 매우 무식하게 코드를 작성했다. num, base = map(int, input().split(' ')) result = 0 num = str(num) ..
Queues Queues 스택과 더불어 매우 빈번히 이용되는 자료구조 큐에 대해 공부해보자. 큐 또한 데이터 원소를 한 줄로 늘어세우는 자료구조, 즉 선형 자료구조라는 측면에서는 선형 배열, 연결 리스트, 스택과 마찬가지이지만 다른 특성을 가지고 있다. 스택에서는 어느 시점에서 스택에 들어있는 데이터 원소를 꺼낼 경우, 가장 최근에 넣었던 원소, 즉 스택 최상단에 자리잡고 있는 원소가 꺼내진다. 이러한 특징을 우리는 후입선출 (LIFO)이라고 앞서 공부한 바 있다. 큐에서는 스택과는 반대로, 어느 시점에서 큐에 들어있는 데이터 원소를 꺼내면 큐에 들어있는 원소 중 가장 먼저 넣었던 것이 꺼내진다. 따라서 큐를 선입선출 (FIFO)이라고도 부른다. 데이터 원소를 큐에 넣는 동작을 인큐 (enqueue)연산이라고 부르며..