Computer 133

Daily Algorithm - 음계

문제 다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다. 연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을 작성하시오.입력첫째 줄에 8개 숫자가 주어진다. 이 숫자는 문제 설명에서 설명한 음이며, 1부터 8까지 숫자가 한 번씩 등장한다.출력 첫째 줄에 ascending, descending, mixed 중 하나를 출력한다. 예제 입력1 2 3 4 5 6 7 8..

Computer/Algorithm 2018.05.30

Daily Algorithm - 스택

문제정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.명령은 총 다섯 가지이다.push X: 정수 X를 스택에 넣는 연산이다.pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.size: 스택에 들어있는 정수의 개수를 출력한다.empty: 스택이 비어있으면 1, 아니면 0을 출력한다.top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.입력첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다...

Computer/Algorithm 2018.05.29

Daily Algorithm - 비밀편지

문제셀던과 레오나드는 암호화화여 문자를 주고 받았다.암호화하는 방법은 숫자 S 만큼 알파벳을 이동하는 대치 문자를 이용하였다. (알파벳은 대문자만 사용)여기서 S를 구하는 방법은 S = 3P + K 이다.K는 입력으로 주어지고, P는 문자열의 각 자릿수값이다.예를 들어, K=3이고, ZOOM이라는 문자를 암호화한다면,S = 3*1 + 3 = 6 , Z ==> FS = 3*2 + 3 = 9 , O ==> XS = 3*3 + 3 = 12 , O ==> AS = 3*4 + 3 = 15 , M ==> B이다.이 문제에서는 암호화된 문자를 원문으로 바꾸는 것이 문제이다.즉, 암호문 FXAB가 입력되면 원문 ZOOM을 출력해야한다.입력첫째줄에 K값이 입력된다. (K < 10)둘째줄에 20글자이내의 대문자로 이루어진..

Computer/Algorithm 2018.05.28

C언어 퀵 정렬을 이용한 문자열 사전 순 정렬

알고리즘 문제를 해결하다보면 문자열 정렬 문제를 풀어야 하는 경우가 있습니다.테스트 케이스의 수가 얼마 안되는 문자열 정렬 문제는, 우리가 자주 사용하는 버블 정렬이나 선택 정렬을 통해 풀 수 있지만테스트 케이스가 많아지면 시간 초과로 인해 문제를 해결하지 못하는 경우가 생기기도 합니다.우리는 시간 초과를 해결하기 위해서 정렬 방식을 변경해야 하는데, 이번 글에서는 비교 정렬 방식 중 가장 빠른 퀵 정렬을 사용해보려고 합니다.직접 퀵 정렬을 구현하려면 힘들지만, C언어에서는 qsort라는 함수를 제공하고 있어 편하게 사용할 수 있습니다. qsort를 사용하기 전에 qsort 함수의 구조를 먼저 알아보겠습니다. void qsort( void *base, size_t num, size_t width, int..

Computer/C 2018.05.27

Rust + Rocket으로 웹 서비스 만들기 (1)

Rust + Rocket으로 웹 서비스 만들기 (1)안녕하세요, kentakang 입니다. 오늘부터 Rust 언어와 Rust로 개발된 웹 프레임워크인 Rocket을 이용해서 웹 서비스를 개발하는 강좌를 작성해보려고 합니다. 우선 강좌에 들어가기 전에 Rust에 대해서 소개해 드리겠습니다. Rust? Rust는 Firefox로 유명한 Mozilla 재단에서 개발 중인 프로그래밍 언어입니다. Mozila 소속 개발자인 그레이던 호어가 개인으로 진행하던 프로젝트였는데,Mozilla 재단에서 개발하고 있는 웹 브라우저 엔진인 Servo 개발에 쓰면서 함께 연구 프로젝트로 편입 되었습니다.병렬 처리와 동시성 프로그래밍에 강점을 가지고 있는 시스템 프로그래밍 언어입니다.Rust의 가장 큰 특징으로는 변수가 변경 불..

Computer/Rust 2018.05.17

JDBC를 이용한 Java와 PostgreSQL 연동

JDBC를 이용한 Java와 PostgreSQL 연동 안녕하세요, kentakang 입니다. 오늘은 BananaAllergy와 Database를 연동하면서 공부했던, JDBC를 통해 PostgreSQL과 연동하는 방법에 대해 글을 작성해보려고 합니다. 본격적인 내용에 들어가기 전에 처음 보는 용어들부터 알려드리도록 하겠습니다. 용어 설명 JDBC : Java Database Connectivity의 줄임말. 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API PostgreSQL : DBMS(Database Management System)의 한 종류 DBMS : Database Management System의 줄임말로 데이터베이스라는 데이터의 집합을 만들고 저장 및 관리할 수 있는 기능을 제공하..

PostgreSQL 설치

PostgreSQL 설치 안녕하세요, kentakang 입니다. 오늘은 프로젝트에서 DB를 활용하기 위해서, DBMS 중 하나인 PostgreSQL을 설치해보려고 합니다.보통 개인 단위에서 많이 사용하는 DBMS는 MariaDB (MySQL) 인데, 저는 PostgreSQL을 좋아해서 PostgreSQL을 사용하고 있습니다. 서버 환경 CentOS 7.4, Linux 커널 버전 4.16.6 환경입니다. 설치할 PostgreSQL의 버전은 10 버전입니다.설치하기 PostgreSQL 공식 사이트에서도 yum을 통한 설치 방법을 소개하고 있어, 저도 해당 방법을 통해 설치를 진행하겠습니다. 우선 PostgreSQL 저장소를 설치해주세요. sudo yum install https://download.postg..

Computer/Server 2018.05.07

Graylog 설치하기

Graylog?예전까지는 웹 서비스를 운영할 때 그냥 AWS에 올려 놓고 페이지를 수정하는 작업들만 해왔습니다.하지만 직접 웹 서버를 운영하고, 서비스를 구축해나가다 보니 로그를 직접 봐야하는 일이 많아져서 좀 더 로그를 체계적으로 관리하는 방법은 없을까? 알아보게 되었습니다. 제가 오늘 소개할 Graylog는 오픈 소스 로그 분석 시스템입니다.우리는 Graylog를 통해 로그를 중앙에서 통합 관리하고, 로그에 내용을 실시간으로 분석하는 등 시스템의 안정화를 꾀할 수 있습니다.오늘 이 글에서는 Graylog를 설치하는 과정을 다뤄보고자 합니다. 서버 환경운영체제는 CentOS 7.4를 사용하고 있으며,서비스의 구동을 위해 웹 서버로 Nginx와 Tomcat을 사용하고 있습니다.설치 할 Graylog의 버..

Computer/Server 2018.04.28

BananaAllergy 개발 일기 - Java 프로그래밍

프로그래밍은 자신이 가장 필요로 하는 것을 개발할 때, 가장 재미있는 것 같다.평소에도 프로그래밍을 좋아하는 편이지만, 이번엔 내가 원해서 제작하게 된거라 더 재미 있었다.이 서비스를 개발하게 된 계기는 네이버 TV의 검색 시스템이다. 나는 최근 올라온 바나나 알러지 원숭이 음악방송 무대가 보고 싶어 검색을 했는데, 내가 원하는 영상들은 잘 보이지 않는다.내 생각으로는 태그 기반의 검색 시스템을 갖고 있어 이런 결과가 나오는 것 같다.바나나 알러지 원숭이는 그 경우의 수가 한정적이라서 중간 중간 있는 음악방송 영상들을 쉽게 찾을 수 있지만 가수 이름으로 검색하면 그렇지 않다. 오마이걸로 검색 뒤 최신순으로 정렬하면 음악 방송 영상들은 하나도 안보인다.이외에도 어느 정도 페이지를 넘어가면 같은 영상들만 계..