
도둑이 보석가게에 배낭을 메고 침입했다. 배낭의 최대 용량은 W이며, 이를 초과해서 보석을 담으면 배낭이 찢어질 것이다. 각 보석들의 무게와 가격은 알고 있다. 배낭이 찢어지지 않는 선에서 가격 합이 최대가 되도록 보석을 담는 방법은? 흔히 알고리즘을 배울 때 자주 등장하는 문제 중 하나인 배낭 채우기 문제 (Knapsack Problem) 이다. 그 중에서도 보석을 자를 수 있다고 가정하는 Fractional Knapsack 문제와 자를 수 없다고 가정하는 0-1 Knapsack 문제가 있는데, 전자보다는 후자가 주로 다루어진다. 0-1 Knapsack 문제는 다이나믹 프로그래밍 (Dynamic Programming: DP) 이라는 방법을 쓰는 기본적인 문제로 알려져 있다. 알고리즘 문제를 푸는 방법론..

이전 포스팅에서 머신 러닝의 기본 개념과 가장 기본적인 Decision Tree 분류 알고리즘에 대해서 얘기했었는데, 이번 포스팅에서는 weka라는 툴을 이용해서 이걸 실제로 돌려보고 간단한 테스트 프로그램을 만들어 본다. weka는 뉴질랜드 Waikato 대학교에서 제작한 머신 러닝 툴이다. 'Waikato Environment for Knowledge Analysis' 의 약자이며 위 사진처럼 생긴 귀여운 뉴질랜드 고유종 새 이름이기도 하다. weka는 Java로 만들어졌으며 여러 가지 기능을 제공한다. weka explorer라고 해서 트레이닝 데이터랑 알고리즘을 선택해서 머신 러닝 시뮬레이션을 해볼 수 있는 GUI를 제공하며, 이걸 내가 만든 프로그램에 적용해서 써먹을 수 있도록 Java 라이브러..

요즘 컴퓨터공학 분야에서 가장 뜨거운 키워드를 꼽아보라면 머신 러닝 (기계 학습, Machine Learning) 을 빼놓을 수 없다. 인공지능 연구는 한때 이 분야는 더 이상 가망이 없다 endgame 며 지지부진하기도 했지만, 2000년대 이후로 다시 슬금슬금 뜨다가 구글이 집중적으로 이 분야를 파면서 다시 활기를 얻은 느낌이다. 특히 국내에서는 딥마인드 챌린지 매치 (알파고 vs 이세돌) 이후로 폭발적으로 관심이 늘었다. 그때가 내가 대학원을 다니던 시기였는데, 내가 졸업할 때쯤에는 다른 연구실은 다 파리날리는데 AI 다루는 랩들에만 신입생이 가득 차는 광경을 볼 수 있었다. 여튼 이 포스팅에서는 흔히 '머신 러닝' 으로 불리는 기술의 기본 개념과 널리 쓰이는 분류 알고리즘, 그리고 분류 알고리즘 ..

최근 몇년간 인공지능이 핫한 기술로 떠오르고 있는데, 인공지능의 전통적인 활용 분야 중 하나로 텍스트 마이닝 (Text Mining) 이 있다. 여기서 '마이닝' 이란 본래 광산 (Mine) 에서 채굴을 한다는 의미로, 텍스트 마이닝이라 하면 텍스트 속에서 뭔가 의미있는 정보를 뽑아내는 작업을 뜻한다. 텍스트 마이닝의 대표적인 사례로 SNS를 분석해서 현재 핫이슈가 무엇인지, 어떤 사건에 대한 여론이 어떤지를 파악하거나 상품에 대한 리뷰를 분석해서 해당 상품의 특성이나 문제점이 무엇인지를 파악하는 것 등이 있을 수 있겠다. 이외에도 텍스트 마이닝은 현대 사회에서 정말 많이 쓰이는 기술이다. 본 포스팅에서는 인공지능 분야에서 최근 가장 많이 쓰이는 언어 중 하나인 파이썬을 이용해서 영화 리뷰에 대한 텍스트..

공부는 이렇게 했다. - 예전에 사 뒀던 정처기 필기 책을 보면서 블로그에 옮겨 쓰기 - 자기 전에 누워서 블로그에 썼던 정리글 쭉 보기 - '전자문제집 CBT' 앱으로 기출문제 풀어보면서 오답 정리 공부 시작하겠다고 한게 2주 전이었고 실제로 2주동안 보긴 했는데, 실제로 공부에 투자한 시간은 얼마 안 됐다. 게임하러 놀러 나간 날도 있었고 공부한 날도 내용 한두시간 보고 모의고사 한두번 풀어본 정도... 요즘 내 상태상 공부에 집중할 의욕이 없기도 했고, 기출문제로 모의고사를 몇번 돌려보니 매번 무난하게 합격이 떴기 때문에 더 공부할 필요성을 별로 못 느끼기도 했고 그랬다. 사실 아무리 요즘 공부하는 법을 잊었다지만 그래도 대학 시절에 숱한 상대평가 + 서술형 시험을 치러왔는데 지금 와서 60점만 넘..
[2영역: 전자계산기 구조] - 다음 중 가장 인스트럭션 사이클 타임이 짧은 명령어 형식은? > 레지스터-메모리 인스트럭션 > AC 인스트럭션 > 스택 인스트럭션 메모리-메모리 인스트럭션 - 0-주소 명령어 방식 = 스택 컴퓨터: Postfix 형식의 수식을 사용 - 플롭스: FLoating point Operations Per Second 메가플롭스: 부동소수점 연산개수 / (수행시간 * 10^6) - 제어 장치 모델에서 제어 장치로 입력되는 항목 > 클럭, 명령어 레지스터, 플래그 (X: CPU 내 제어신호) - DMA (직접 메모리 액세스) 장치에 내장된 레지스터 > Data Register, Address Register, Data Counter Register, Control Register (..
* 데이터통신 시스템의 기본 구성 - 데이터 전송계 1) 단말 장치 (DTE: Data Terminal Equipment) 사용자와 데이터통신 시스템 사이에서 데이터의 I/O를 처리하는 장치. 입출력, 전송 제어, 기억 기능 > 입력 전용 단말장치: 키보드, OMR 판독기 등 > 출력 전용 단말장치: 모니터, 프린터 등 > 입출력 공용 단말장치: 그 외 대부분 단말 장치 2) 데이터 전송 회선: 신호 변환 장치와 통신 회선으로 구성 > 신호 변환 장치 (DCE: Data Circuit Equipment) 단말장치/컴퓨터의 데이터 통신회선의 신호: 변환해주는 장치. '데이터 회선 종단 장치' 라고도 부른다. 전화, 모뎀, 코덱 (COder/DECoder), DSU 등 3) 통신 제어 장치 (CCU: Com..
* 소프트웨어의 특성 - 상품성: 판매할 수 있는 상품임 - 복잡성: 개발과정이 복잡하고 관리가 어려움 - 변경 가능성: 프로그램을 수정하여 업그레이드와 오류수정 등이 가능 - 복제성: 쉽게 복사하여 유통이 가능 * (컴퓨터) 시스템 - 특정한 목적을 위해 다양한 컴퓨터로 처리 가능한 요소가 유기적으로 결합된 정보 체계 - 입력, 처리, 출력, 제어, 피드백으로 구성 * 소프트웨어 위기 (Crisis) 하드웨어는 빠르게 발전하는데 소프트웨어 개발속도는 그것을 따라가지 못하고 고객의 요구사항을 감당하지 못하게 됨 - 개발 기간 지연, 개발 비용 증가, 인력 부족, SW 퀄리티 저하, 유지보수의 어려움... * 소프트웨어 공학 가장 경제적으로 / 퀄리티 높은 소프트웨어를 만들기 위한 / 방법, 도구, 절차 ..
* 자기 디스크의 구조 - 트랙: 하드디스크 표면의 동심원 - 섹터: 트랙을 쪼갠, 데이터가 저장되는 기본 단위 - 실린더: 회전축에서 동일한 거리에 있는 트랙의 집합 - 클러스터: 파일을 저장하는 논리적 단위로 몇 개의 섹터를 묶은 것 * 디스크 스케줄링 데이터 액세스를 위해 디스크 헤드의 이동 경로를 결정하는 방법. 1) FCFS (First Come First Service) = FIFO: 대기 큐에 먼저 들어온 트랙에 대한 요청을 먼저 처리. 구현이 쉽지만 Arm이 많이 움직여서 Seek Time이 증가 2) SSTF (Shortest Seek Time First): 탐색 거리가 가장 짧은 트랙에 대한 요청을 먼저 처리. 가운데 트랙이랑 안/바깥쪽 트랙이랑 응답시간 편차가 크다. 너무 바깥쪽에 멀..
* 운영체제 사용자와 컴퓨터 하드웨어간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종. 사용자가 컴퓨터를 편리하게 사용할 수 있게 하며 자원 스케줄링, 신뢰성 향상 등의 목적을 가짐 - OS의 성능 평가 기준: Throughput, Turnaround Time, Availability, Reliability - OS의 발전 과정 1) 일괄처리 시스템 (Batch): 입출력 버퍼링을 통해 처리해야할 작업을 기억장치에 모아놓고 일괄 처리. 2) 다중 프로그래밍 시스템: 여러 프로그램들이 탑재되어 처리장치를 번갈아서 사용. 처리량 극대화 3) 시분할 시스템 (Time Sharing): 여러 사용자들의 프로그램을 컴퓨터가 번갈아가며 처리. 응답시간 최소화 4) 다중 처리 시스템: 여러개의 CPU를 사용하여 ..