분류 전체보기 153

[BOJ] 1094번 막대기

문제 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대를 만들려고 한다. 막대를 자르는 가장 쉬운 방법은 절반으로 자르는 것이다. 지민이는 아래와 같은 과정을 거쳐서 막대를 자르려고 한다. 지민이가 가지고 있는 막대의 길이를 모두 더한다. 처음에는 64cm 막대 하나만 가지고 있다. 이때, 합이 X보다 크다면, 아래와 같은 과정을 반복한다. 가지고 있는 막대 중 길이가 가장 짧은 것을 절반으로 자른다. 만약, 위에서 자른 막대의 절반 중 하나를 버리고 남아있는 막대의 길이의 합이 X보다 크거나 같다면, 위에서 자른 막대의 절반 중 하나를 버린다. 이제, ..

[BOJ] 1049번 기타줄

문제 Day Of Mourning의 기타리스트 강토가 사용하는 기타에서 N개의 줄이 끊어졌다. 따라서 새로운 줄을 사거나 교체해야 한다. 강토는 되도록이면 돈을 적게 쓰려고 한다. 6줄 패키지를 살 수도 있고, 1개 또는 그 이상의 줄을 낱개로 살 수도 있다. 끊어진 기타줄의 개수 N과 기타줄 브랜드 M개가 주어지고, 각각의 브랜드에서 파는 기타줄 6개가 들어있는 패키지의 가격, 낱개로 살 때의 가격이 주어질 때, 적어도 N개를 사기 위해 필요한 돈의 수를 최소로 하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주어진다. ..

[BOJ] 1759번 암호 만들기

문제 바로 어제 최백준 조교가 방 열쇠를 주머니에 넣은 채 깜빡하고 서울로 가 버리는 황당한 상황에 직면한 조교들은, 702호에 새로운 보안 시스템을 설치하기로 하였다. 이 보안 시스템은 열쇠가 아닌 암호로 동작하게 되어 있는 시스템이다. 암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한 개의 모음과 최소 두 개의 자음으로 구성되어 있다고 알려져 있다. 또한 정렬된 문자열을 선호하는 조교들의 성향으로 미루어 보아 암호를 이루는 알파벳이 암호에서 증가하는 순서로 배열되었을 것이라고 추측된다. 즉, abc는 가능성이 있는 암호이지만 bac는 그렇지 않다. 새 보안 시스템에서 조교들이 암호로 사용했을 법한 문자의 종류는 C가지가 있다고 한다. 이 알파벳을 입수한 민식, 영식 형제는 조교들의 방에 침..

[BOJ] 1316번 그룹 단어 체커

문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다. 출력 첫째 줄에 그룹 단어의 개수를 출력한다. 예제 // 입력 1 3 happy new year // 출력 1..

[Computer Column] Git Flow

Git Flow란?Vincent Driessen의 브랜칭 모델을 위한 고수준 저장소 작업을 제공하는 Git의 확장 프로그램이다. Git Flow의 설치는 여기에서 확인할 수 있고, GUI 도구인 SourceTree도 지원한다.출처 : https://nvie.com/posts/a-successful-git-branching-model/왜 사용하는가?DVCS(destributed version control system)와 CVCS(centralized version control system)를 비교할 때, 가장 도드라지는 특징은 버전 관리 이력을 누가 가지고 있느냐일 것이다. DVCS는 그 이름답게 모든 유저가 버전 관리 이력을 가진다. 문제는 그렇다보니 브랜치가 체계적으로 관리가 되지 않아, 버전 관리..

Outdated/Column 2019.03.20

[Computer Column] Git - 2

이전 글에서 우리는 Git을 시작하고 간단한 수정을 통해 변경사항을 어떻게 기록하는지 살펴보고, 원격 저장소에도 해당 변경사항을 업로드하였다. 이번에는 다른 컴퓨터에서 동일한 저장소를 이용하는 법을 보려고 한다.원격 저장소에서 프로젝트 가져오기이전 글에서 Git을 시작하는 방법이 두 가지라고 얘기했던 것을 기억하는가? 첫 번째 방법은 본인의 로컬 컴퓨터에서 시작하는 것이었고, 두 번째는 Git 서버에 저장되어 있는 프로젝트를 본인의 컴퓨터로 가져오는 것이었다. 두 번째는 과연 어떻게 하는 것일까?git clone "Your URL" # 원격 저장소의 링크를 붙여넣는다. 필자는 폴더를 하나 만들어 다른 컴퓨터에서 사용한다고 가정하겠다.원격 저장소와 동일해진 것을 확인할 수 있다. info.txt을 열어 다..

Outdated/Column 2019.03.17

[Computer Column] Git - 1

Git은 작은 프로젝트부터 큰 프로젝트까지 효율적이고 빠르게 모든 것을 관리하기 위해 고안된 분산형 버전 관리 시스템이다. 자유 그리고 오픈 소스이며 Linux 운영체제의 아버지인 리누스 토발즈에 의해 개발됐다.(버전 관리 시스템이 무엇인지 모른다면?) 이번 글에서는 Git의 사용법에 대해서 알아보도록 하자. Git을 편하게 이용할 수 있는 좋은 GUI들이 많지만 여기서는 커맨드를 사용하도록 하겠다. 독자는 Git이 설치되어 있어야 하고, Github 계정이 있어야 한다. Git은 여기서 설치할 수 있고, Github 계정은 여기서 생성할 수 있다.Git 설정모든 프로그램은 사용하기 전에 적절하게 설정해줘야 한다. Git도 마찬가지이다. git config를 이용해 여러가지를 설정해줄 수 있지만, 여기서..

Outdated/Column 2019.03.17

[Computer Column] 버전 관리 시스템(VCS, Version Control System)

버전버전 관리 시스템을 알아보기 전에, 버전(version)이 무엇인지 알아보자. 영어사전에는 이렇게 나와있다.'어떤 것의 버전이라는 것은 이전 혹은 이후의 형태와 세부적인 것이 다른 특정한 형태이다.'출처 : 네이버 영어사전예를 들어, 한국대학교 컴퓨터공학부에 재학 중인 홍길동이라는 학생의 신원을 info.txt라는 파일에 기록했다고 해보자.2019123123 홍길동 컴퓨터공학부 학교 생활을 하면서 길동이는 자기의 이름이 마음에 들지 않아 홍길순으로 개명을 했다. 이에 맞춰 info.txt 파일도 수정해주었다.2019123123 홍길순 컴퓨터공학부 이번엔 홍길순이 컴퓨터공학부가 자기랑 맞지 않다고 생각해 산업경영학부로 전과했다. 이전과 마찬가지로 info.txt를 수정한다.2019123123 홍길순 산..

Outdated/Column 2019.03.16

데이터베이스 첫걸음(미크 외, 박주항 역) - 리뷰

데이터베이스 첫걸음(미크 외, 박주항 역) - 리뷰데이터베이스 첫걸음대상 독자데이터베이스를 개관하고 싶은 사람데이터베이스를 배웠으나 무엇인지 잘 모르겠는 사람데이터베이스에 관심 있는 사람책 소개이 책은 데이터베이스를 처음 배우는 초보자부터, 기본을 다시 배우고 싶은 관련 업계 종사자들을 위한 내용으로 구성돼 있다. 데이터베이스를 구성하는 다양한 요소를 먼저 확인(실습)하고 난 후에 그 요소에 관한 설명(강의)를 읽음으로써 데이터베이스를 이해할 수 있도록 도와준다. 그리고 챕터의 끝에 간단한 정리와 연습문제로 해당 챕터의 내용을 올바르게 이해했는지 확인할 수 있다. 실습환경은 'MySQL'을 사용하며, 책의 중반부서부터 다룬다.느낀점이 책은 필자가 데이터베이스를 입문하기 위해 선택한 책이다. 필자는 입문서..

Outdated/Computer 2018.09.13

[C++ Core] 함수 개체(function object)와 람다 표현식(lambda expression)

[C++ Core] 함수 개체(function object)와 람다 표현식(lambda expression)함수 개체함수 개체(function object)란, operator()를 오버로드한 개체를 의미한다. 펑터(functor)라고도 한다. 다음은 가장 간단한 함수 개체이다.struct Foo { void operator()() { } }; // 실제 사용법 Foo a; a(); 그럼 이와 같은 함수 개체는 왜 사용하는 것일까? 바로, 성능 때문에 사용하는 것이다. 특히, 함수 개체는 STL 알고리즘을 이용할 때 유용하다. STL 알고리즘의 어떤 버전은 마지막 인자로 함수를 받는다. 가령 std::for_each()나 std::count_if() 말이다. 여기에 함수 개체를 넘겨주면 그 바디가 인라인..