분할 정복 (Divide & Conquer) 분할 정복은 문제를 여러개로 나누어서 푸는 알고리즘입니다. 문제를 여러개로 분할하여 정복하기 동적 계획법(DP)과의 차이점은 동적 계획법은 분할한 문제들이 서로 영향을 미침. 분할 정복은 분할한 문제들이 서로 영향을 미치지 않음. 이 있습니다. 분할 정복의 필요조건 문제를 나눌 수 있어야 합니다. 부분 문제의 답을 이용하여 원래 문제의 답을 계산하는 방법이 있어야 합니다. 분할 정복의 알고리즘의 접근법은 다음과 같습니다. 분할 : 문제를 작은 문제로 분할하는 과정 정복 : 분할한 작은 문제들을 해결. 조합 : 작은 문제에 대한 결과를 원본 문제에 대한 결과로 조합합니다 분할 정복 문제 하나를 가져와서 함께 풀어보겠습니다. 풀어볼 문제는 1074번 Z입니다. 문..
파이썬 코딩 테스트에서 자주 사용되는 데큐(deque)입니다. from collections import deque 이렇게 불러올 수 있습니다. deque를 사용하면 얻는 장점 엄격한 리스트를 만들 수 있다. 속도가 리스트에 비해 굉장히 빠르다. List = O(n), deque = O(1) 당연하지만 큐작업이 훨씬 편해진다. 큐(QUEUE)에 대한 이해. 큐는 기본적으로 선입 선출 (FIFO : First In First Out)구조입니다. 예시로는 다음이 있습니다. 프린터기 : 프린터기는 먼저 인쇄를 누른 것부터 차례대로 작동합니다. 은행 대기표 : 은행에서는 먼저 대기표를 뽑은 사람부터 차례대로 서비스를 진행합니다. deque 함수는 큐에 제한되어 있는 선입선출 제한을 풀어서, 더 여러곳에 사용할 ..
파이썬에는 round라는 반올림 함수가 있다. >>> round(0.5) 0 >>> round(1.5) 2 >>> round(2.5) 2 >>> round(3.5) 4 >>> round(4.5) 4 >>> round(5.5) 5 다만 파이썬이나 자바스크립트 같은 개발언어에서는 위와 같이 "오사오입"이라는 방식의 반올림을 사용합니다. 오사오입(round-to-nearest-even) 반올림에서 5 미만의 숫자는 내림, 5 초과의 숫자는 올림합니다. 5의 앞자리가 홀수인 경우에는 올림을, 짝수인 경우에는 내림을 합니다. 우리가 자주 사용하는 사사오입의 반올림은 4 이하의 숫자는 내림, 5 이상의 숫자는 올림을 하는 반올림이죠! 반올림의 종류에 관해서는 이 문서를 읽어주세요. 사사오입의 반올림을 구현하는 방법..
파이썬에서 리스트를 생성할 때는 다음과 같은 방법이 있다. list = [] list = list() 여기서 코딩테스트에서 자주 사용하는 0으로 이루어진 리스트를 만들려면 다음과 같은 방법이 있다. list = [0 for i in range(n)] >>> list = [0 for i in range(10)] [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 이와 같은 방법을 사용해서 2차원 리스트를 만들려면 다음과 같은 방법을 사용하면 된다. double = [[0 for w in range(n)] for h in range(n)] >>> double = [[0 for w in range(3)] for h in range(5)] [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, ..
원본 링크 : https://github.com/loonghao/photoshop-python-api 어도비사의 포토샵 API 한글 예제입니다. 번역되어 있는 자료가 없어, 새로 번역하였습니다. 지원되는 버전 2021 2020 cc2019 cc2018 cc2017 설치 pip install photoshop_python_api 포토샵이 설치 되어 있어야 작동합니다. 예제 코드 폰트는 어도비 기본폰트가 아니라면 대부분이 적용되지 않습니다. 폰트명은 영어명으로 지정해줘야 작동합니다. import photoshop.api as ps app = ps.Application() # 포토샵 불러오기 doc = app.documents.add(1920, 1080) # 문서 생성 사이즈 : 1920x1080 text_l..
zip함수 zip은 반복 가능한 요소들을 압축하는 기능을 가지고 있습니다. 반복 가능한 요소들에는 리스트, 튜플, 딕셔너리, set이 있습니다. zip의 기본형태: zip(반복 가능한 요소 1, 반복가능한 요소 2, 반복 가능한 ... ) zip을 사용해보겠습니다. listA = ['Alice', 'Anna'] listB = ['Bob', 'Jon', 'Frank'] >>> print(list(zip(listA, listB))) [('Alice', 'Bob'), ('Anna', 'Jon')] # 이런느낌 listA = ['i1', 'i2'] listB = ['i1', 'i2', 'i3'] >>> print(list(zip(listA, listB))) [('i1', 'i1'), ('i2', 'i2')] z..
개발 날짜 : 2021.03.31 ~ 리눅스 서버에서 돌아가는 코드입니다. 권장 사항 : 이 프로그램은 코로나 19 자가진단을 무증상으로 제출하는 프로그램입니다. 증상이 있을 시 스스로 해당하는 증상에 유증상으로 체크하시기 바랍니다. 프로젝트 관련 추천글 리눅스 서버 무료로 만들기 리눅스 백그라운드 실행 리눅스 파이썬 모듈 설치 리눅스 설치 필요 모듈 schedule selenium selenium-webdriver 개발 일지 1.1.0 이제 원하는 시간에 자가진단을 진행할 수 있습니다. 기본 설정은 08시(오전 8시)입니다. 1.1.1 인터넷 속도에 따라 입력 오류가 날 수 있는 점을 보완했습니다. 1.2.0 - 보안 키패드 입력 기능 비밀번호에 맞는 버튼을 순서대로 눌러 입력해줍니다. - html..
파이썬 스케줄 모듈은 반복되는 코드를 정리할 때 제격인 모듈입니다. 먼저 스케줄 모듈을 설치해주세요. 윈도우 pip install schedule 리눅스 pip3 install schedule import schedule import time def job(): print("작업") # 할 일들 # 10초에 한번씩 실행 schedule.every(10).second.do(job) # 10분에 한번씩 실행 schedule.every(10).minutes.do(job) # 매 시간마다 실행 schedule.every().hour.do(job) # 10시간마다 실행 schedule.every(10).hour.do(job) # 매일 10:30에 실행 schedule.every().day.at("09:00").d..
원문 : https://github.com/deezer/spleeter Spleeter에 대하여 Spleeter은 Python으로 작성된 사전 훈련 모델을 보유하고 있는 Deezer 음원 분리 라이브러리이 Tensorflow를 사용합니다. 음원 분리 모델을 쉽게 훈련할 수 있으며(분리된 소스의 데이터 세트가 필요) 다양한 분리 방식을 수행하기 위해 이미 훈련된 최첨단 모델을 제공합니다. 보컬(노래하는 목소리) / 반주 (2음원) 보컬/드럼/베이스/나머지 (4음원) 보컬/드럼/베이스/피아노/나머지 (5음원) 2음원과 4음원 모델은 *musdb 데이터 셋에서 높은 성능을 보입니다. Spleeter은 GPU에서 실행할 때 실시간보다 100배 더 빨라집니다. *musdb는 Mixture(혼합물), Drums(드..
음향 분리 모듈인 Spleeter을 사용하여 만든 코드입니다. 코드 실행 전에 터미널창에 pip install Spleeter를 입력해주세요. Spleeter 모듈의 사용 방법은 이곳을 클릭하여 알아볼 수 있습니다. 이 코드에서는 3가지를 입력받습니다. 1. 음원파일 갯수, 2, 4, 5 중 하나를 입력해주세요. 2 : 보컬 + 배경 음악 4 : 보컬 + 드럼 + 베이스 + 나머지 5 : 보컬 + 드럼 + 베이스 + 피아노 + 나머지 2. 폴더 경로 입력 ex) C:\music_file 3. 파일 이름 입력 (확장자명은 적지 않고, mp3만 가능함) ex) 브루노 마스 (Bruno Mars) - That’s What I Like mp3파일의 이름 중 띄어쓰기는 언더바(_)로 변경됩니다. import os..
파이썬 pip install 안될 때, 환경변수 설정하는 법 코딩을 처음시작하시는 분들 중 많은 분들이 이곳에서 막힙니다. 저도 이 문제를 겪은적이 있고, 블로그 독자분이 질문을 하셔서 해결법을 글로 작성합니다. 오류 : 'pip'은 는 내부 또는 외부 명령 실행할 수 있는 프로그램 또는 배치 파일이 아닙니다. 이런 경우, 크게 2가지를 원인으로 둘 수 있습니다. 1. pip3를 사용하면 되는 경우 윈도우 사용자는 pip과 pip3가 같은 의미를 가지지만, 리눅스 사용자는 pip과 pip3가 각기 다른 의미를 가집니다. pip3을 사용 함으로써 오류를 해결할 수 있습니다. 2. 환경변수 설정을 하지 않은 경우 이 문제를 겪으시는 분들 중 대부분이 이렇게 해결됩니다. 다음을 따라해주세요. 1. 환경..
OSError: [WinError 123] 파일 이름, 디렉터리 이름 또는 볼륨 레이블 구문이 잘 못되었습니다 위와 같은 문자는 파일 이름에 사용할 수 없습니다. 따라서 이런 문자를 바꾸는 해결코드 try: if '\\' or '/' or ':' or '*' or '?' or '"' or '' or '|' in file_name: file_name = file_name.replace('\\', '_') file_name = file_name.replace('/', '_') file_name = file_name.replace(':', '_') file_name = file_name.replace('*', '_') file_name = file_name.replace('?', '_') file_name =..
원문 : https://google.github.io/mediapipe/solutions/hands 개요 손의 모양과 움직임을 인식하는 능력은 여러 기술 영역과 플랫폼에서 서비스 이용자에게 좋은 인식을 줄 수있는 중요한 요소가 될 수 있다. 예를 들어, 이 모듈은 수화 이해와 손동작 제어를 위한 프로그램의 기초를 만들 수 있으며, 증강 현실(AR) 디지털 콘텐츠의 정보를 촬영 이미지 위에 그려지게 할 수 있게 할 수도 있다. 사람들에게 자연스럽게 다가오지만, 실시간 손 인식은 손이 종종 스스로 혹은 서로 가려지고(예: 손가락/팔막 막힘 및 손 떨림) 변수도 많기 때문에 굉장히 어려운 컴퓨터 기술 작업이다. MediaPipe Hands는 고성능 손, 손가락 추적 솔루션이다. 머신 러닝(ML)을 사용하여 각..
원문 : https://google.github.io/mediapipe/solutions/face_mesh 개요 MediaPipe의 얼굴 그물망은 실시간으로 468개의 3D 얼굴 랜드마크를 추정하는 얼굴 형상 솔루션입니다.(모바일에서도 사용 가능!) 머신러닝 기술을 사용하여 3D표면 현상을 유추하므로 전용 센서 없이 일반 카메라만으로 사용이 가능합니다. 이 솔루션은 파이프라인(작업을 병렬 처리하는 기술), GPU 가속, 경량 모델 아키텍처(최적화)를 활용하여, 실시간으로 엄청난 성능을 낼 수 있습니다. 모델 FACE DETECTION MODEL(얼굴 인식 모델) 얼굴 인식은 MediaPipe 얼굴 인식에 사용되는 것과 동일한 BlazeFace 모델입니다. 자세한건 이곳을 읽어주세요. FAC..
원문 : https://google.github.io/mediapipe/solutions/face_detection.html 참고바랍니다. 초보자분들을 위해 번역한 글입니다. 미흡한 영어 실력이다보니 의역, 오역이 있을 수 있습니다. 개요 MediaPipe의 얼굴 인식은 엄청 빠른 얼굴 인식 솔루션입니다. 6개의 얼굴 랜드마크와 다중 얼굴 인식 기능을 지원합니다. 이 모듈은 가볍고 성능이 뛰어난 얼굴 검출기인 BlazeFace에 기반을 두었습니다. 인식기의 초실시간 기능은 형상 추론(예: 얼굴 그물망)기능 같은 3D 얼굴 키포인트 추출, 얼굴의 특징 또는 표정 판별, 얼굴 부위 분할같은 작업에 사용할 수 있습니다. GPU 없이 CPU만으로도 작업이 가능합니다. 솔루션 API MODEL_SELECTION(..