이 글에서는 Python의 OpenCV 모듈을 활용해 이미지 형태학적(Morphological) 연산 중 하나인 침식(Erosion)과 팽창(Dilation)을 구현하는 방법을 알아봅니다. OpenCV는 컴퓨터 비전(Computer Vision) 분야를 위해 설계된 오픈소스 라이브러리로, 원래 인텔(Intel)이 개발했습니다. BSD 오픈소스 라이선스를 따르기 때문에 누구나 자유롭게 사용할 수 있습니다. OpenCV 설치하기 OpenCV의 기능을 사용하려면 먼저 pip를 통해 패키지를 설치해야 합니다. sudo pip3 instal
파이썬의 ChainMap은 여러 개의 딕셔너리를 하나의 단위로 묶어서 관리할 수 있게 해주는 클래스입니다. 각각의 딕셔너리를 별도로 다루지 않고도 마치 하나의 딕셔너리처럼 조회하고 조작할 수 있어 코드가 훨씬 깔끔해집니다. ChainMap은 파이썬 표준 라이브러리인 collections 모듈에 포함되어 있습니다. 따라서 사용하기 전에 먼저 해당 모듈을 임포트해야 합니다. import collections 이 글에서는 ChainMap 클래스에서 자주 사용되는 주요 기능들을 예제와 함께 살펴보겠습니다. maps 속성과 keys(),
NamedTuple이란? NamedTuple(네임드 튜플)은 파이썬 collections 모듈에서 제공하는 클래스입니다. 일반 튜플과 달리 각 요소에 의미 있는 이름을 붙일 수 있어, 딕셔너리처럼 키(key)와 값(value)의 매핑 구조를 가지면서도 인덱스를 통한 접근까지 지원합니다. 즉, 튜플의 불변성과 딕셔너리의 가독성을 동시에 활용할 수 있는 자료형입니다. NamedTuple을 사용하려면 먼저 파이썬 표준 라이브러리인 collections 모듈을 임포트해야 합니다. import collections NamedTuple 값
데크(Deque, Double-Ended Queue)는 스택과 큐 구조를 일반화한 자료구조입니다. 이름 그대로 양쪽 끝에서 요소를 추가하거나 제거할 수 있으며, 리스트 객체를 기반으로 생성됩니다. 특히 요소를 추가(append)하고 제거(pop)하는 연산이 모두 O(1)의 시간 복잡도로 처리되어 성능 면에서 매우 효율적입니다.데크는 파이썬 표준 라이브러리 클래스로, collections 모듈에 포함되어 있습니다.데크 사용 준비하기데크를 사용하려면 먼저 collections 모듈을 임포트해야 합니다.import collections이
OrderedDict란 무엇인가? OrderedDict는 Python 내장 dict 객체의 서브클래스로, collections 모듈에 포함된 표준 라이브러리 클래스입니다. 일반 dict와의 핵심적인 차이점은 OrderedDict가 키가 삽입된 순서를 그대로 유지한다는 점입니다. 반면 일반 dict에서는 키의 순서가 삽입 순서와 다르게 나타날 수 있습니다. 참고로 Python 3.7부터는 일반 dict도 삽입 순서를 유지하도록 언어 사양에 포함되었지만, OrderedDict는 순서를 활용한 move_to_end() 같은 전용 메서드와
이 글에서는 Python을 활용하여 웹사이트 알람 시스템을 만드는 방법을 단계별로 살펴봅니다. 문제 정의 웹사이트 URL과 원하는 시간을 입력받아, 시스템 시간이 지정된 시간에 도달하면 브라우저에서 해당 웹사이트를 자동으로 여는 프로그램입니다. 우리는 보통 즐겨찾기(북마크)에 다양한 웹페이지를 저장해 두고 사용합니다. 그런데 어떤 웹페이지는 매일 특정 시간에 열어서 작업을 처리해야 하는 경우가 있습니다. 예를 들어 출근 후 오전 9시에 업무용 사이트를 열거나, 장이 열리는 시간에 맞춰 특정 페이지를 확인해야 하는 상황이 그렇습니다.
파이썬에는 10진 부동 소수점(decimal floating point) 관련 작업을 수행하기 위한 Decimal 모듈이 내장되어 있습니다. 이 모듈은 일반 float 타입에서 발생할 수 있는 오차를 줄여, 올바르게 반올림된(rounded) 10진 산술 연산을 제공합니다.Decimal 모듈을 사용하려면 먼저 표준 라이브러리에서 이를 임포트해야 합니다.import decimal참고로 decimal.Decimal(25.36)처럼 float 값을 그대로 넘기면 이진 부동 소수점 변환 과정에서 생긴 오차까지 함께 표현됩니다. 정확한 10진
데이터 과학이란?데이터 과학(Data Science)은 알고리즘 개발, 데이터 추론, 기술을 융합하여 분석적으로 복잡한 문제를 해결하는 다학제적 탐구 분야입니다. 데이터셋을 다룰 때는 기술 통계(descriptive statistics)의 심층 탐색, 통계 검정, 시각화 함수 등 다양한 통계 기법이 활용되며, 이 모든 작업의 중심에는 항상 데이터가 있습니다.Python의 경우 Pandas는 대표적인 데이터 분석 라이브러리로, Excel 스프레드시트나 CSV 파일은 물론 다양한 외부 데이터 소스로부터 손쉽게 데이터를 가져올 수 있도록
신경망(Neural Network)은 딥러닝의 가장 중요한 핵심 요소로, 다양한 분야에서 폭넓게 활용되고 있습니다. 오늘날 신경망은 이미지 분류, 음성 인식, 객체 탐지 등 수많은 실용적인 문제를 해결하는 데 사용되고 있습니다.그렇다면 신경망은 정확히 무엇이고, 어떻게 작동할까요? 이번 글에서는 신경망의 기본 구조와 작동 원리를 살펴보고, 파이썬으로 간단한 단일 뉴런 신경망을 직접 구현해 보겠습니다.신경망의 기본 구성 요소신경망은 여러 구성 요소로 이루어져 있으며, 대표적인 요소는 다음과 같습니다.입력층(Input Layer), x
하나의 문자열이 주어졌을 때, 이 글에서는 영문 소문자·대문자, 숫자, 특수문자 등을 무작위(random)로 조합하여 새로운 문자열을 계속 생성하고, 그 결과가 주어진 목표 문자열과 일치할 때까지 반복하는 방법을 다룹니다.이 기법은 무한 원숭이 정리(Infinite Monkey Theorem)를 코드로 구현한 것으로, random 모듈의 동작 원리와 문자열 비교 로직을 재미있게 학습할 수 있습니다.예시입력 PP 출력 AK AK . . . . .목표 문자열 PP와 길이가 같은 무작위 문자열이 매 반복마다 출력되고, 결국 PP와 정확
파이썬을 활용하면 재미있는 게임도 손쉽게 개발할 수 있습니다. 그중 대표적인 예가 바로 가위바위보(Rock Paper Scissors) 게임입니다. 이 프로그램에서는 random 모듈의 randint() 함수를 사용해 무작위 숫자를 생성하며, 컴퓨터가 랜덤하게 선택을 하도록 만듭니다. 가위바위보는 원래 두 명의 플레이어가 하나, 둘, 셋을 외치면서 주먹을 쥔 손을 아래로 흔들다가 마지막에 가위·바위·보 중 하나를 내는 방식으로 진행되는 게임입니다. 파이썬으로는 이 과정을 간단한 입력과 조건문, 반복문만으로 충분히 구현할 수 있습니
웹 스크래핑(Web Scraping)이란?웹 스크래핑은 컴퓨터 과학 분야에서 웹사이트로부터 데이터를 자동으로 추출하는 기술을 의미합니다. 이 기법을 활용하면 웹상에 흩어져 있는 비정형(Unstructured) 데이터를 분석과 활용에 적합한 정형(Structured) 데이터로 변환할 수 있습니다.파이썬 3에서 가장 널리 사용되는 대표적인 웹 스크래핑 도구는 다음과 같습니다.Urllib2RequestsBeautifulSoupLxmlSeleniumMechanicalSoup1. Urllib2Urllib2는 파이썬에 기본으로 내장되어 있는
Python에서는 openpyxl 모듈을 사용해 엑셀(Excel) 파일을 손쉽게 다룰 수 있습니다. 이 모듈 하나만 있으면 엑셀 파일 생성, 데이터 쓰기, 읽기 등 대부분의 작업을 코드로 처리할 수 있습니다.openpyxl은 외부 라이브러리이므로 먼저 설치가 필요합니다. 명령 프롬프트(cmd)에 아래 명령어를 입력하세요.pip install openpyxl설치가 완료되면 바로 실습을 시작할 수 있습니다. 아래에서 자주 사용되는 핵심 기능들을 예제와 함께 살펴보겠습니다.1. 시트 제목 확인하기새 워크북을 만들면 기본적으로 Sheet라
OpenCV는 Open Source Computer Vision(오픈소스 컴퓨터 비전)의 약자로, 이 라이브러리를 활용하면 이미지와 비디오에 다양한 연산을 수행할 수 있습니다.OpenCV의 주요 활용 분야얼굴 인식 시스템모션 트래킹(움직임 추적)인공 신경망딥러닝 신경망비디오 스트리밍 등OpenCV 설치 방법Windows 환경에서는 아래 명령어를 사용해 설치할 수 있습니다.pip install opencv-pythonLinux 환경에서는 다음과 같이 설치합니다.sudo apt-get install python-opencv비디오 역방향
컴퓨터(PC)에 표시된 시간을 받아 24시간 형식으로 변환하는 파이썬 프로그램을 만들어 보겠습니다. 이 과정에서는 문자열 슬라이싱(string slicing) 기법을 활용하므로, 별도의 외부 라이브러리 없이 간단하게 구현할 수 있습니다. 변환 규칙 12시간 형식을 24시간 형식으로 바꿀 때는 다음 두 가지 기본 규칙을 따릅니다. 시간이 PM(오후)이면 시(hour) 부분에 12를 더합니다. 시간이 AM(오전)이면 시 부분을 그대로 사용합니다. 다만 자정과 정오는 특수한 경우이므로 별도로 처리해야 합니다. 12:xx:xx AM
정수로 이루어진 리스트가 주어졌을 때, 리스트 안에서 가장 큰 N개의 요소를 찾아내는 것이 이번 포스팅의 목표입니다. 예를 들어 리스트에서 두 번째로 큰 값이나 상위 5개의 값 등을 추출해야 하는 경우에 유용하게 활용할 수 있습니다. 예제 입력 : [40, 5, 10, 20, 9] N = 2 출력 : [40, 20] 알고리즘 1단계 : 정수 리스트와 찾고자 하는 최댓값의 개수 N을 입력받습니다. 2단계 : 리스트를 N번 반복하여 순회합니다. 3단계 : 매 순회마다 현재 남은 요소 중 최댓값을 찾아 새로운 리스트에 저장하고,
타이머(Timer) 객체는 지정된 시간 간격에 따라 특정 작업을 실행하기 위해 사용됩니다. 타이머 객체를 활용하면 정해진 시간 후에 동작을 수행하는 스레드를 손쉽게 생성할 수 있습니다.Python에서 Timer는 threading 모듈의 Thread 클래스를 상속받은 서브클래스입니다. 따라서 일반 스레드와 마찬가지로 start() 메서드를 호출하여 타이머를 시작합니다.타이머 객체 생성하기타이머 객체는 다음과 같은 문법으로 생성합니다.threading.Timer(interval, function, args=None, kwargs=No
터틀(Turtle)은 파이썬의 독특하고 매력적인 기능 중 하나입니다. 터틀 모듈을 활용하면 마치 그림판에 그리듯 간단한 명령만으로 다양한 도형과 패턴을 화면에 손쉽게 그릴 수 있습니다. 사용 방법은 매우 간단합니다. 먼저 turtle 모듈을 임포트하고, 그래픽 창(윈도우)을 생성한 뒤, 거북이 객체를 만들어 터틀이 제공하는 메서드를 호출하면 됩니다. 터틀 주요 메서드 정리 메서드 매개변수 설명 Turtle() 없음 새로운 거북이 객체를 생성하여 반환합니다 forward() 거리(amount) 지정한 거리만큼 거북이를 앞
소켓(Socket)은 양방향 통신 채널의 양 끝단(end point)을 의미합니다. 소켓을 활용하면 같은 머신 안에서 실행되는 프로세스 간에도, 나아가 지구 반대편에 떨어져 있는 시스템 간에도 자유롭게 통신할 수 있습니다. 소켓은 TCP와 UDP 같은 서로 다른 채널 유형을 기반으로 구현됩니다. TCP는 신뢰성 있는 연결 지향 통신을 제공하고, UDP는 속도가 빠른 비연결형 통신에 적합합니다. 파이썬에서 소켓을 생성하려면 기본 제공되는 socket 모듈과 socket.socket() 함수를 사용합니다. 소켓 생성 문법 my_soc
주어진 문자열이 회문(Palindrome)인지 확인하는 것은 프로그래밍 입문자가 자주 접하는 대표적인 문제입니다. 회문이란 앞에서부터 읽으나 뒤에서부터 읽으나 동일한 문자열을 의미합니다. 예를 들어 madam, level, racecar처럼 거꾸로 뒤집어도 원래 문자열과 같은 경우가 이에 해당합니다.알고리즘회문 여부를 확인하는 과정은 매우 간단합니다.Step 1: 문자열을 입력받습니다. Step 2: 슬라이싱(slicing) 기법으로 문자열을 뒤집은 뒤, 원본 문자열과 비교합니다. Step 3: 비교 결과를 화면에 출력합니다.핵심