본문 바로가기

반응형

분류 전체보기

(48)
[자료구조] 5_2. Heap 1. 정의힙(Heap)이란 완전이진트리(Complete Binary Tree)를 기본으로 하는 Tree-based 자료 구조이다. Heap은 기본적으로 다음과 같은 조건을 만족한다. A가 B의 부모 노드이면, A 노드의 value와 B 노드의 value 사이에는 대소관계가 성립한다. 위의 조건을 만족하는 Heap으로 Max Heap과 Min Heap을 생각해볼 수 있다. Max Heap의 경우 부모 노드가 항상 자식 노드보다 큰 경우이고, Min Heap의 경우는 그 반대로 부모 노드가 항상 자식 노드보다 작은 경우가 된다. 이러한 원리에 의해서 당연히 Max Heap의 Root는 가장 큰 값이 될 것이고, Min Heap의 Root는 가장 작은 값이 될 것이다. Heap의 규칙에 의해 Root는 항상 ..
[알고리즘] 1_4. 병합 정렬(Merge Sort) 1. 정의병합정렬(Merge Sort)는 Divide and Conquer(분할정복) 알고리즘으로 분류되며, 일반적이고 간단한 방법으로 최대, 최악의 경우에도 O(nlogn)의 속도로 sort가 가능하다. Divide and Conquer로 제안된 Merge Sort 알고리즘은 Top-down 방식으로 구현되었다.(후에 Bottom-up 방식의 알고리즘도 발표되었다.) 정렬 방식은 전체의 원소를 1개 원소의 단위로 분할한 뒤, 다시 병합과정을 거쳐 새롭게 정렬된 배열을 생성한다. 같은 평균 속도 O(nlogn)를 가지는 Quick Sort, Heap Sort와 함께 실제로 사용한 경우, 비교적 느리다.(Quick>Heap>Merge 순서) Array의 정렬보다는 Linked List의 정렬에 주로 사용된..
[C] 4. 표현식(Expression) 1. 표현식(Expression)컴퓨터가 프로그램을 실행하는 것은 사실, 수많은 식들의 조합이다. 우리가 흔히 수학에서 사용되는 그 식이라고 생각하면 맞다. 그러한 식들을 조합해서 다양한 프로그램을 만드는 것이다. 프로그램 언어를 이용해서 프로그래밍을 할 때, 우리가 계산을 위해서 사용하는 식들을 표현식(expression)이라 부르고, 이러한 표현식들은 피연선자(operand)들과 연산자(operator)들로 이루어진다. 당연한 얘기겠지만, 이러한 '계산'을 수행하는 표현식들은 항상 결과값을 가진다.피연산자(Operand) : 표현식에서의 상수 또는 변수(ex. 1+2에서 1 과 2)연산자(Operator) : =, +, =, *, / 등이 있다. 1) Primary Expression operator..
수열(sequence) 정리 1. 등차수열정의 : 인접한 두 항 사이의 차가 일정한 수열. 일반항 : 등차중항 : 등차수열의 합 : 수열의 합과 일반항의 관계 : cf)조화수열정의 : 수열 에서 각 항의 역수가 등차수열을 이루는 수열. 일반항 : 2. 등비수열정의 : 인접한 두 항의 비가 일정한 수열.( )일반항 : 등비중항 : 등비수열의 합 : ,cf1) 수능에서 ‘도형’문제의 경우, 대부분 닮음이므로 빠르게 등비수열임을 감안해 계산 가능. cf2) 원리합계 단리법 : , 복리법 : (매년 초 : 초항 a(1+r), 공비 1+r, 매년 말 : 초항 a, 공비 1+r) 3. 여러 가지수열1) 계차수열정의 : 수열 에서 인접한 두 항의 차가 하나의 수열을 이루는 수열.( )일반항 : (n=2,3,4,…) 2) 군수열정의 : 수열 에서..
Object-oriented Programming(OOP) 개념 정리 1. OOP(Object-oriented Programming)Object-oriendted Programiing은 프로그램을 구현하는 programming paradigm 중 하나이다. OOP에서는 'Objects'라는 개념을 바탕으로 한다. Objects는 C언어의 Structure처럼 Data를 포함할 수 있고, Objects가 할 수 있는 동작 등을 code로 작성해 포함한다. 우리는 Objects에서의 Data부분을 Fields, 그리고 Objects가 할 수 있는 행동들을 procedure로 작성한 것을 Methods라고 한다. OOP Language는 C++, C#, Java, Python, Smalltalk, PHP, Ruby 등이 있다.2. OOP를 쓰는 이유 C언어 같은 Procedur..
MAC 배터리 사이클 확인하기 MacBook Pro 2016 Late에 대한 배터리 이슈가 계속 제기되었고, 많은 유저들이 불평을 하고 있다. 심지어 미국의 컨슈머리포트는 이로 인해 MacBook Pro에 '비추천' 등급을 매기기도 했다. 배터리 이슈에 관해서는 많은 유저들이 다양한 원인을 제기했는데, 애플은 사파리의 캐시설정과 어떠한 버그가 있었다고 정정했다. 하지만 최근 미국 컨슈머리포트는 애플이 문제의 원인으로 꼽은 사파리의 버그를 해결한 MacBook에 대해서 다시 '추천'등급으로 정정하기도 했다. 애플은 이런 버그를 해결한 OS를 곧 내놓는다고도 했는데, 이처럼 많은 사람들이 노트북의 배터리 성능이 노트북의 구매에 있어서 중요한 부분으로 생각하고 있음을 확인할 수 있다. 노트북은 휴대하고 다니기에 배터리 성능이 필히 중요할 ..
MAC 한영전환 키 변경(OS X El Capitan 이후) MacBook Pro 2016 late를 구매하고 나서 OS X를 사용하면서 한글을 입력하고 싶은데, 한영전환이 되지 않아 당황했었다. 평소 OS X Yosemite의 iMac을 사용하면서, Command + Space로 한영전환을 하려고 했는데, 자꾸만 한영전환 대신 Spotlight 검색기능이 실행되었다. 무엇이 문제인가 찾아봤더니... El Capitan 이후로 한영전환 키와 Spotlight 검색 키가 변경되었다고 한다. El Capitan 이후의 OS X에서는 Command + Space가 아닌 Ctrl + Space로 한영전환이 설정되어있다. 평소 Command + Space로 한영전환을 하던 나에겐 적응이 쉽지 않았고, 그래서 한영전환 키를 다시 Command + Space로 변경하기로 했다..
[암호학] 2. 고전암호학(Traditional Ciphers) - 전치 암호(Transposition Cipher) 1. 정의전치 암호(Transposition Cipher)는 치환 암호(Substitution Cipher)와 다르게 특정 글자를 다른 글자로 치환하지 않는다. 그 대신 글자들의 순서를 변경하여 암호화한다. 예를 들어 Plaintext의 첫 글자와 열 번째 글자를 바꾸고, 두 번째 글자를 다섯 번째와 바꿔서 암호화할 수 있다. 이렇게 단순히 순서를 변경하는 것만으로도, Ciphertext로부터 Plaintext를 한눈에 알기는 어려워진다. Transposition Cipher는 이러한 점을 이용해서 위치 변경의 규칙을 정하고, 그 규칙에 맞추어 Plaintext를 암호화한다. 복호화는 어렵지 않다. 암호화한 규칙을 역으로 Ciphertext로부터 Plaintext를 찾을 수 있을 것이다. 간단히, Tra..