콘텐츠로 건너뛰기
Home » 스터디 » Page 3

스터디

Julia 문자열 다루기

Julia에서 문자열은 String 타입으로 정의되어 있으며, 내부적으로 UTF8로 인코딩되는 유니코드 문자열을 지원한다. 문자열은 일련의 유니코드 문자들로 구성되며 불변한 값이다. Julia에서는 String 외에 단일 문자를 표현하는 Char 타입이 존재하며, 리터럴 문법 역시 문자열과 문자가 구분된다. (문자열은 겹따옴표, 단일 문자는 홑따옴표를 사용한다.) 기본 리터럴 문법 "string"과 같이 겹따옴표를 사용한다. 여러 줄에 걸쳐지는 문자열은 """…"""로 둘러쌀 수 있다. 파이썬도 이런 3중 따옴표를 사용하는데, 줄리아가 파이썬과 다른 점은 멀티라인 문자열을 쓸 때 들여쓰기가 생기더라도 닫는 따옴표도 들여쓰기 되어 있다면 그 들여쓰기를 무시한다는 점이다. 글자… 더 보기 »Julia 문자열 다루기

중심극한정리

어떤 집단의 특성을 정확하게 알고 싶을 때, 가장 이상적인 해결 방법은 해당 집단의 전체 구성원을 조사해보는 것이다. 어떤 선거 후보에 대한 실제 지지율을 알고 싶다면 모든 유권자들을 만나서 지지여부를 조사하는 것이 가장 정확한 답에 가까울 것이며, 남자 고등학생들의 키를 알고 싶다면 모든 남자 고등학생들의 키를 조사하면 될 일이다. 하지만 이런 전수조사는 현실적으로 비용과 시간의 한계 때문에 실제로 진행하는 것은 불가능에 가깝다. 그래서 사람들은 전체 모집단의 일부를 표본으로 뽑아, 표본조사를 수행한다. 그리고는 통계학의 힘을 빌려서 표본 조사의 결과를 바탕으로 모집단의 특성을… 더 보기 »중심극한정리

오일러 프로젝트 87번

어떤 소수의 제곱, 세제곱, 네제곱의 합으로 표현할 수 있는 수를 찾는 문제. 소수의 제곱 + 소수의 3제곱 + 소수의 4제곱)으로 나타낼 수 있는 가장 작은 수는 28입니다. 28 = 22 + 23 + 2433 = 32 + 23 + 2449 = 52 + 23 + 2447 = 22 + 33 + 24 50 미만에 이런 수는 모두 네 개 있습니다. 5천만 미만에 이렇게 나타낼 수 있는 수는 모두 몇 개나 됩니까? 보다 영리하게 푸는 방법은 여전히 모르겠고, 현재로서는 brute-force로 푸는… 더 보기 »오일러 프로젝트 87번

오일러 프로젝트 85

균일한 격자 내에서 만들 수 있는 직사각형의 개수에 관한 문제이다. 눈금의 크기가 1인 격자에서 가로, 세로를 정했을 때 그 속에서 만들 수 있는 직사각형의 개수가 2백만개에 가장 근접할 때의 가로/세로를 구하는 것이다. 격자의 가로 크기를 x, 세로 크기를 y라 했을 때 그 내부에 존재하는 직사각형들의 가로 크기는 1, 2, 3, … x 이고 세로 크기도 1, 2, 3, … y 가 된다. 가로가 a 일 때 이 폭으로 x 에 들어갈 수 이는 경우는 (x + 1 – a) 개… 더 보기 »오일러 프로젝트 85

matplotlib의 기본 사용법 및 다른 시각화 라이브러리

오늘은 파이썬의 시각화 부분에서 가장 널리 쓰이고 있는 matplotlib에 대해서 알아보도록 하자.

matplotlib을 사용할 때 주로 서브패키지인 pyplot을 사용한다. pyplot은 MATLAB의 인터페이스와 유사하게 작동할 수 있도록 하여 MATLAB을 사용하는 사용자층이 쉽게 matplotlib으로 옮겨오도록 하고 있다. 문제는 MATLAB의 인터페이스가 그모양이어서 그런지 모르겠는데, matplotlib의 인터페이스가 일관성도 없는 편이고 그다지 객체지향적이지도 않아서 사실상 API 문서만으로도 사용이 어렵고 관련 예제를 보면서 코드를 따라써야 하는 수준으로 처리해야 하는 경우가 많다는 것이다.

더 보기 »matplotlib의 기본 사용법 및 다른 시각화 라이브러리

파이썬으로 이진 탐색 구현하기

이진 탐색(binary search)은 정렬된 데이터에서 특정한 값을 아주 빠르게 찾는 방법이다. N개의 데이터 중에서 특정한 값 x를 찾을 때, 최악의 경우 N번의 비교가 필요한데, 이진 탐색의 경우 최대 log_{2}N만큼의 비교를 하게 된다. 즉 자료의 크기가 클수록 선형 탐색에 비해 성능이 매우 우수해진다. 다만 이진 탐색은 자료가 정렬되어 있다는 전제가 필요하다. (이 때문에 컴퓨터 과학에서는 정렬이 매우 중요하고, 성능이 좋은 정렬 알고리듬을 만들기 위해 많은 노력이 있어왔다.)

더 보기 »파이썬으로 이진 탐색 구현하기

생일 문제

30명의 사람이 있을 때, 이 중 생일 같은 사람이 최소 2명 있을 확률을 구하고 싶다. 어떻게 계산할 수 있을까? 이러한 문제를 생일 문제라 한다. 흥미로운 점은 생일 문제가 우리의 직관을 비웃는 것 같은 결과를 보인다는 것이다.

예를 들어 당신이 누군가를 만났다고 하자. 그 사람이 당신과 생일이 같을 확률은 얼마일까? 당신의 생일이 정해져 있으므로 그 사람의 생일은 365일 중 같은 날인 하루여야 한다. 이 때의 확률은 1/365로 약 0.274% 밖에 안된다. 이처럼 1년의 날 수가 365일이나 되기 때문에 생일이 같아질 확률이 매우 작아 보인다.

더 보기 »생일 문제

표현식이 무엇인지 알아보자

오늘은 표현식에 대해서 좀 이야기해볼까 한다. 표현식(Expressioin)은 너무 직역한 단어라 좀 이상한 감이 없잖아 있는데, 딱히 대체할만한 말이 떠오르지 않는다. 영어권에서는 표현식 대신에 평가식이라는 말도 사용한다. 필수적이거나 중요한 개념은 아닌데, 프로그래밍 언어 가이드를 보다보면 자주 등장하는 용어이고, 알고 있다면 학습에 도움이 될 수는 있겠다 싶다.

더 보기 »표현식이 무엇인지 알아보자

수퍼마켓 계산줄

https://www.codewars.com/kata/57b06f90e298a7b53d000a86

수퍼마켓의 계산 줄을 처리하는데 소요되는 전체 시간을 구하는 프로그램을 작성한다.

요건

문제의 입력으로는 정수 리스트와 정수값 하나가 제시된다. 리스트는 고객을 의미하며, 다른 정수값은 계산대의 개수이다. 리스트 내의 각 정수값은 개별 고객으로 각 고객이 계산을 마치는데 필요한 시간을 정의한다.

규칙

  • 빈 계산대가 없으면 나머지 손님은 모두 기다려야 한다.
  • 빈 계산대가 나타나면 계산줄을 무조건 앞에서부터 처리된다.
  • 모든 손님이 계산대 통과를 완료해야 한다.
더 보기 »수퍼마켓 계산줄