본문 바로가기

분류 전체보기

[Data Structure] List ▶ 2차원 배열 생성 3가지 방법 1) arr = [ [0] * cols ] * rows : 하나의 [0] * cols를 모든 rows의 index에서 가리키는 형상이다. : 따라서 하나의 열만 수정한다 하더라도, 모든 열이 다 수정된다. : 추천하지 않는 2차원 배열 생성 법 2) 가장 추천하는 방법 arr = [ [0 for _ in range(cols)] for _ in range(rows) ] 혹은 arr = [ [0] * cols for _ in range(rows) ] 3) arr = [] for _ in range(cols): col = [] for _ in range(rows): col.append(0) arr.append(col) ▶ 2차원 배열 생성시 속도 개선 방법 mylist = [.. 더보기
ARM ToolChain 관련 문서 ※ 본 포스팅은 armlink, armcc 사용자 가이드를 요약 및 번역한 것입니다. 오역이 있을 수 있으며, 댓글 남겨 주시면 수정하도록 하겠습니다. 문서 링크는 아래에 있습니다. 1. 읽어 볼만한 ARM ToolChain 문서 종류 - Armcc User Guide (ARM DUI 0375) : armcc 컴파일러의 특징을 설명 - ARM C and C++ Libraries and Floating-Point Support User Guide (ARM DUI 0378) : ARM C, C++ 라이브러리, ARM C microlib 특징을 설명. - Armasm User Guide (ARM DUI 0379) : armasm, 어셈블러의 특징을 설명 - Armlink User Guide (ARM DUI 0.. 더보기
[JAVA] 디컴파일 및 컴파일 방법 시나리오 : .class가 모여있는 JAVA 플러그인에서 특정 기능을 수정하고 다시 컴파일하려고 한다. 0. Jar 파일 압축 풀기 >>> jar -xvf {jar 파일} 1. jd_gui 실행 파일을 이용해 먼저 .class 파일을 확인한다. 컴파일된 class 파일을 디컴파일해서 보여주는 것이라 수정할 수 없다. e.g. jd-gui-0.3.5.windows 2. JAVA 디컴파일러를 이용해 .java 파일로 만들어 준다. e.g. jad158g.win, 프롬프트 창에서 jad 명령어 이용 >>> jad -o -r -sjava -dsrc tree/**/*.class 3. 컴파일 해준다. 4. jar 명령어 이용하여 하나의 파일로 압축해준다. >>> jar cvf [파일명].jar -C . [압축할 파.. 더보기
ECDSA Sign & Verify ECDSA(Elliptic Curve Digital Signature Algorithm) : 타원 곡선을 이용한 전자 서명 검증 알고리즘 시나리오 : 앨리스는 그녀의 메시지를 개인키 $d_A$를 이용해 서명을 하고, 밥은 그녀의 공개키 $H_A$를 이용해 유효성 검증을 한다. 앨리스만이 유효한 서명을 할수 있고, 모두가 서명을 확인할 수 있다. 1) 서명 생성 전제 조건 : 도메인 파라미터(D)는 표준을 따른다. 입력 : - 랜덤 변수 $ k \in {1, ..., n-1} $ 혹은 ephemeral key, 혹은 ek. - 해쉬 메시지 z (혹은 4.29 그림에 의하면 $ e = H(m) $) , 혹은 hm. - 개인키 $ d_A $ (4.29 그림의 d), 혹은 pk1 출력 : (r, s) 1. 랜덤.. 더보기
[Data Structure] dictionary ※ 자주쓰는 것 위주로 정리 Key와 Value 출력 # Key와 Value 출력 for key, val in dic.items(): print("key = {key}, value = {value}".format(key=key, value=val)) ... key = alice, value=[1, 2, 3] key = bob, value=20 key = tony, value=15 key = suzy, value=30 ... # Key만 출력 for key in dic.keys(): print(key) ''' alice bob tony suzy ''' # Value만 출력 for val in a.values(): print(val) ''' [1, 2, 3] 20 15 30 ''' Key로 Value 얻기 .. 더보기
최소비용 신장트리(Minimum Cost Spanning Tree) 학습 목표 - 신장트리(Spanning Tree) 개념과 특징을 이해할 수 있다 - 최소비용 신장트리(Minimum Cost Spanning Tree) 개념과 특징을 이해할 수 있다 - 최소비용 신장트리 사용 사례 - 구현 방법 신장 트리 개념과 특징 무향방 연결 그래프 $G=(V,E)$ 가 주어질때 모든 노드를 포함하고 연결되어 있으면서, 간선 비용의 합이 최소인 트리 - 하나의 그래프에서 많은 신장 트리가 존재할 수 있다 - 모든 정점이 연결되어 있어야 하고, 사이클이 존재해선 안된다. - n개의 정점을 n-1개 간선으로 연결한다. 최소비용 신장트리 개념과 특징 신장 트리 중에서 가중치 합이 최소인 트리 최소비용 신장트리 사용 사례 1. 군집 분석(Cluster Analysis) 2. 필기 인식(Ha.. 더보기
CBZ and CBNZ CBZ 명령은 [CBZ Rn, label] 형식을 따른다. Rn이 0x0이면 label로 분기하고, 0x0이 아니면 다은 번지로 진행한다. [Reference] http://trace32.com/wiki/index.php/CBZ_and_CBNZ 더보기
Ecc Point Doubling/Addition 및 고찰 1. Ecc Point Doubling Input : P Output : 2P If $ P =0 $ : then $2P = 0 $. Else $ P = (x, y)$ : If $y = 0$ : then $2P = 0$ Else $ y \ne 0 $ : then let $ s = (3x^2 + a)/(2y) $, $ x_2 = s^2 - 2x $, $ y_2 = s(x - x_2) - y $, and $ 2P = (x_2, y_2)$ --> 6 multiplications, 4 additions/subtractions, and 1 division 2. Ecc Point Addition Input : P, Q Output : P + Q, $(P \ne Q) $ If $P = 0$ : then $P + Q =.. 더보기