전체 글 61

[한국은행 전산학 기출][2010] 허프만 트리를 이용한 문자열 압축

허프만 트리... 이름과 어렴풋한 트리와 0101101의 비트 나열만 기억나는 나...를 반성해 보고자 풀이를 정리한다. 이 문제는 한국은행에서 공개한 전산학 기출 문제 중, 2010년 전산학술 문제이다. 문제는 다음과 같다. 문제 허프만(Huffman) 압축 알고리즘을 이용하여 ACABFEAFDE의 입력 문자를 압축하려고 한다. 아래 물음에 답하시오. (1) 허프만 트리를 그리고, 허프만 코드를 작성하시오. 데이터 빈도수 등장 확률 A 3 0.3 B 1 0.1 C 1 0.1 D 1 0.1 E 2 0.2 F 2 0.2 (2) '(1)' 문항에서 1글자를 8bit ASCII 코드로 계산하였을 때, 압축률(%)은 얼마인가? (단, 소수 첫째자리에서 반올림하시오.) 풀이 (1) 허프만 트리를 그리고, 허프만 ..

[SELECT] 중복과 NULL을 제거한 개수 세기 (COUNT, NULL, DISTINCT)

오늘의 문제: 프로그래머스 > 중복 제거하기 요구조건 오늘의 문제는 다음의 요구조건을 만족해야 한다. 1. NAME의 개수를 세야 함 - COUNT 2. NAME 중 NULL인 것은 제외해야 함 - WHERE NAME IS NOT NULL 3. NAME의 중복을 제거해야 함 - DISTINCT 정답 SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS WHERE NAME IS NOT NULL 기억해야 할 것 COUNT COUNT는 column에 대한 row의 개수를 세어 주는 것이다. COUNT는 기본적으로 모든 row를 세기 때문에, 중복을 제거하고 싶거나 null을 제거하고 싶으면 WHERE 절을 이용하여 조건을 추가해야 한다. IS NOT NULL WHERE 절에서 해당 값..

[프로그래밍언어론] 오버로딩(overloading)과 오버라이딩(overriding)의 차이점

객체지향 프로그래밍 언어의 특징 중 하나인 다형성에서 비롯되는 오버로딩과 오버라이딩은 제대로 알아놓지 않으면 헷갈리는 개념이다. 이 두가지 개념은 기술 면접이나 전공 시험에서도 많이 나오는 개념이니, 한번 정리해서 머리에 넣어두자. 오버로딩 (overloading) 오버로딩은 하나의 클래스에 이름은 같지만 매개변수의 수나 타입이 다른 메소드를 추가적으로 선언하는 것이다. 오버로딩의 특징은 다음과 같다. 메소드 이름이 같아야 한다. 파라미터 개수가 달라야 한다. 파라미터 개수가 같을 경우, 데이터 타입이 달라야 한다. 리턴형은 같아도 되고 달라도 된다. (다른 거 다 같고 리턴형만 다르면 오버로딩이 아니다.) 오버라이딩 (overriding) 오버라이딩은 상속관계에 있는 메소드와 동일한 이름, 파라미터를 ..

[프로그래밍언어론] 객체지향 프로그래밍 언어의 특징

객체지향 프로그래밍 언어의 특징은 JAVA를 처음 배우다 보면 이론 부분에 항상 배우는 것이다. 그때 당시에는 오 당연 당연 그렇지 하고 지나가겠지만, 생각보다 특징이 뭐야! 응이 뭐야!라고 물으면 뭐가 둥둥 떠다니긴 하는데 말로 안 나온다. 이번 기회에 정리하고, 이해를 기반으로 암기를 하도록 하자. 1. 캡슐화 (Encapsulation) 객체지향 프로그래밍 언어에서는 객체를 통해 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는다. 이러한 캡슐화는 정보 은닉을 통해 외부에서 캡슐 내부의 내용이 보이지 않아 오류의 파급 효과가 적다. 또한, 캡슐화된 객체는 재사용이 용이하다. 2. 정보 은닉 (Information Hiding) 캡슐화에서 가장 중요한 개념으로 쓰이는 것이다. 캡슐화의 정보 은닉을..

AWS DynamoDB를 이용하여 비관계형 DB 구축하기 - (2) Inserting and retrieving data

해당 포스트는 아직 한글화가 진행되지 않은 Projects on AWS : Create and Manage a Nonrelational Database with Amazon DynamoDB 자습서를 진행하면서 자습서의 내용을 한글로 옮기고, 자습서에는 나와있지 않지만 추가적으로 공부한 내용을 덧붙인 포스트이다. 추가적으로 공부를 하면서 참고한 링크는 포스트 하단에 링크해 두었다. 2. Inserting and retrieving data 이번 단계에서는 간단한 예제들을 통해 DynamoDB에 데이터를 넣어 보기도 하고, 검색해 보기도 할 것이다. CreateTable API를 이용하여 DynamoDB에 table을 생성해 볼 것이고, BatchWriteItem API를 이용하여 DB에 데이터를 inser..

AWS DynamoDB를 이용하여 비관계형 DB 구축하기 - (1) Application background

해당 포스트는 아직 한글화가 진행되지 않은 Projects on AWS : Create and Manage a Nonrelational Database with Amazon DynamoDB 자습서를 진행하면서 자습서의 내용을 한글로 옮기고, 자습서에는 나와있지 않지만 추가적으로 공부한 내용을 덧붙인 포스트이다. 추가적으로 공부를 하면서 참고한 링크는 포스트 하단에 링크해 두었다. 1. Application background 이번 모듈에서는 튜토리얼 진행을 위해 AWS Cloud9 환경을 설정하고, 튜토리얼 진행을 위한 코드를 다운받는다. 서점 application을 만든다고 생각해 보자. 이 application은 사용자들에게 판매 중인 책을 기본적인 정보(작가명 등)와 함께 보여 주어야 할 것이다. ..

DynamoDB의 Hash key와 Sort key

DynamoDB의 Hash key와 Sort key에 대해서 알아보자. 이를 알아보기 전에 먼저 primary key에 대한 이해가 필요하다. DynamoDB에서는 테이블을 생성할 때 모든 attribute들에 대한 스키마를 미리 정의해 둘 필요가 없다. 오직 primary key (PK)에 대한 스키마만 테이블을 생성할 때 정의하면 된다. DynamoDB에서의 Primary Key PK에는 단일 PK(simple key)와 복합 PK(composite key) 두 가지 종류가 존재한다. 단일 PK는 하나의 attribute만을 primary key로 사용하며, 복합 PK는 두 개의 attribute들을 결합하여 사용한다. 복합 PK에서 첫 번째 attribute는 partition key, 두 번째 a..

[2차 코테 탈] 우아한 테크캠프 3기 지원 회고

미래의 내가 현재의 생각을 잊게 되면 빡대갈쓰야! 하고 다시 초심을 잡기 위해 써 보는 글이다. 고로 미래의 제가 아닌 다른 분들이 보실 경우, 다른 이에게 정보를 주려고 하는 글이 아닌 점을 감안하시고 읽어주십쇼. 알맹이 있는 이야기가 있을런지는 모르겠지만 누군가가 나에게 탈락이 뭐 그리 잘난 일이라고 이런걸 쓰냐 하신다면? 2차 코테 탈을 했으면 1차 코테 합격했으니 잘나지는 못하더라도 잘한 일이라고 할 것이고, 1차코테나 서류 탈을 했으면 서류를 냈고 코테를 열심히 봤으니 잘한 일이라고 할 것이다. 나는 능력 스탯 업그레이드 효율이 좋은 편은 아니기 때문에 닥치는 대로 경험치를 쌓아야 능력에 +1이 될까말까이므로, 탈락도 나에겐 좋은 경험치 획득 기회이다. 각설하고, 이야기를 시작해보도록 하자. 1..

[Data Structure] Heap

Heap의 기본 개념 (binary) heap 자료구조는 complete binary tree특성을 가지는 배열 객체이다. Heap 객체 구성 요소 heap을 나타내는 배열 A는 다음 두 개의 인자를 가진다. A.length 배열 A의 모든 원소의 개수를 나타낸다. A.heap-size 배열 A의 모든 원소가 heap에 속하지 않을 수 있다. $A[1..A.length]$ 의 값들 중, $A[1..A.heap-size]$에 속한 값만 heap 내부에 있는 원소이다. 배열 A의 원소 중 heap에 속하는 원소의 개수를 나타낸다. 단, $0\leq{A.heap-size}\leq{A.length}$ 를 만족한다. Heap index 계산 tree index의 편의를 위해, tree의 root는 A[1]이다. ..

VSCode Extension 오류 - vscode extension development host가 열리지 않을 때

그렇다. 큰 기대를 안고 VSCode extension hello world 예제를 실행해보려고 했는데, 오류 아닌 오류가 났다. 분명 MS VSCode Document - Your First Extension에 따르면, 그냥 짠짠짠 쉽게 설치 하고 F5 누르면 helloworld 예제 실행해 볼 수 있어~ 라고 해서 해보려고 했다. 근데 아무리 F5를 누르고 기다려도 열심히 building.... 표시만 뜨지 뭐 development host도 안뜨고 걍 노트북만 열심히 일하는 소리가 들렸다. 열심히 무한 빌딩만 할 뿐.. 그래서 열심히 구글링을 해 봤다. 소웨 4년 다니고 남은것은 구글링 Issue 모음 어떤 오류인지 실마리를 얻었던 과정 첫 번째로, 실마리를 얻었던 것은 Can't open vsco..

반응형