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

스터디

Python 101 : 리스트

지난 글에서 파이썬에서 사용되는 가장 기본적인 값의 유형에 대해 살펴보았다. 오늘은 리스트에 대해서 이야기해보려고 한다. 리스트는 여러 개의 값이 연속적으로 배치된 일종의 집합이다. 다른 프로그래밍 언어에서는 배열(Array)이라고 하기도 한다. 사실 배열과 다른 리스트라는 자료 구조가 별도로 존재하기는 하는데 (연결 리스트 같은 걸 들어본 적이 있을지도 모르겠다.) 파이썬의 리스트는 C의 배열과 크게 다르지 않다고 생각하면 된다.

더 보기 »Python 101 : 리스트

SQLite – STRICT 테이블

얼마전 SQLite의 새 버전인 3.37.0이 릴리즈되었습니다. 주로 안정성이나 성능 개선 위주의 업데이트만 있다가, 이번 버전에서는 STRICT 테이블이라는 새로운 기능이 추가되었습니다. 이 기능은 다른 DBMS 처럼 테이블 칼럼의 형식에 맞는 값만 저장하도록 제한하는 기능으로, 새로 생성하는 테이블의 옵션 형태로 설정하게 됩니다. SQLite3는 다른 DBMS와 달리 자료의 형(type)에 대해서 유연한 편입니다. 예를 들어 INTEGER 타입으로 정의된 칼럼에 “123” 같은 문자열을 저장하려 한다면 SQLite는 자동으로 이 문자열을 정수형태로 변환을 시도합니다. 따라서 저장되는 값은 문자열이 아닌 정수값 123이 저장됩니다. 만약 “xyz” 같은 변환이 불가능하거나,… 더 보기 »SQLite – STRICT 테이블

Julia 정규식 다루기

Julia에서 정규식은 별도의 모듈을 반입하지 않고 사용할 수 있으며, 패턴 자체는 Base.RegExp 타입으로 표현된다. 정규식 패턴을 만들 때에는 r"..." 형태의 리터럴로 바로 정의할 수 있다. (대신, raw string문자열은 raw"..."이다.) 한번 생성한 Regexp 값은 .pattern 필드로 그 패턴을 다시 확인할 수 있다. 참고로 r" .... " 리터럴은 정규식 패턴을 좀 더 손쉽게 사용할 수 있게 하기 위해 백슬래시를 이스케이프해준다. 따라서 \d 등과 같은 이스케이프 문자 시퀀스에서 백슬래시는 두 번이 아니라 한 번만 쓰면 된다. (r"\d+")

더 보기 »Julia 정규식 다루기

IO모나드와 부수효과

하스켈에서 문자열을 화면에 출력해주는 putStrLn 함수를 생각해봅니다. 이 함수의 타입은 String -> IO ()로 문자열을 인자로 받고 빈 모나드를 리턴합니다. 무언가를 출력하는 일을 수행하니, 반환할 값에는 의미가 없다는 뜻입니다. 반환하는 값이 비어있으니, IO 액션의 연쇄에 있어서는 어떤 종착점이 될 수 있다고 봐도 됩니다. 말하자면 이 액션의 이후에는 어떤 처리를 하는 것이 의미가 없는 셈이죠. 실제로 하스켈 프로그램의 진입점이 되는 main 함수 역시 타입이 IO () 여서, main 함수의 실행이 종료되면 프로그램이 끝나게 됩니다. 통상적인 프로그래밍 경험에 비추어볼 때 우리는 표준입력을… 더 보기 »IO모나드와 부수효과

선형대수를 사용해서 연립방정식 풀기

연립방정식을 손으로 푸는 방법으로는 학교에서 소거법이나 대입법 같은 테크닉을 배운다. 하지만 간단한 1차 연립 방정식을 다른 방법을 사용해서도 풀 수 있는데, 이 다른 방법이라는 것이 손으로 풀기에는 더욱 귀찮지만 컴퓨터에 적용할 수 있다는 장점이 있어서 소개한다. 한개에 600원하는 귤과 한 개에 1000원하는 사과를 모두 12개를 사고, 8800원을 지불하였다. 귤과 사과는 몇 개씩 샀는지 구하라. 이 문제에는 귤과 사과의 개수를 더해서 12, 구매 금액을 모두 더해서 8800원이라는 두 개의 조건이 등장한다. 이 두 조건을 식으로 쓰면 다음과 같을 것이다. 600 *… 더 보기 »선형대수를 사용해서 연립방정식 풀기

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의 기본 사용법 및 다른 시각화 라이브러리