파이썬

Algorithm

[프로그래머스] Level1 | 기사단원의 무기 - 파이썬(Python) | 연습문제

https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 봤을 땐 단순히 for문을 돌려서 약수를 구하면 될 것 같았고 그렇게 코드를 작성했다. 시간 초과 난 정답 def solution(number, limit, power): divs = [] for i in range(1, number+1): div = 0 for j in range(1, i+1): if i % j == 0: div += 1 if div > limit: div = power..

Algorithm

[프로그래머스] Level2 | 프로세스 - 파이썬(Python) | 스택/큐(Stack/Queue)

https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 스택/큐 문제라서 priorities와 index를 묶어서 큐로 만들어 둬야 할 것 같았다. 이렇게 만든 큐를 pop, append 해서 순서를 변경해 주고자 했다. 그리고 만든 큐와 함께 우선순위를 비교 하기 위해 priorities를 우선순위가 높은 순서대로 정렬을 해 줬다. 풀이 순서 if절에서 대기 하고 있는 큐의 첫 원소가 찾으려고 하는 location이면서 내림차순으로 정렬한 우선순위와..

Algorithm

[프로그래머스] Level2 | JadenCase 문자열 만들기 - 파이썬(Python) | 연습문제

https://school.programmers.co.kr/learn/courses/30/lessons/12951 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 생각보다 쉽다고 만만하게 봤지만 런타임 에러 잔뜩 마주한 문제였다. 첫번째 시도 def solution(s): answer = [] check = s.split(' ') for text in check: if text[0].isdigit(): text.lower() answer.append(text) else: answer.append(text[0].upper() + text[1:].lower()..

Algorithm

[프로그래머스] Level2 | 의상 - 파이썬(Python) | 해시(Hash)

https://school.programmers.co.kr/learn/courses/30/lessons/42578?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 : 오랜만에 풀었더니.. 알고리즘 사고(?라고 해야 하나.. 머리가 그대로 굳어버렸다... (럴수럴수,,, 해시를 이용하기 위해 딕셔너리를 야심차게 만들었지만 수학적 지식이 부족하여 결국 다른 사람들의 풀이를 보게 되었다.. 새로 알게 된 점 : 경우의 수를 구할 때 A의 종류가 n개, B의 종류가 m개 일 때 모든 경우의 수는 (n+1)(m+1)으로 구할..

각종 에러들을 해결 해 보자

Python | /home/anaconda3/envs/lib/python3.8/sitepackages/IPython/core/pylabtools.py:152: UserWarning: Glyph 50864 (\N{HANGUL SYLLABLE U}) missing from current font. fig.canvas.print_figure(bytes_io, **kw) / jupyter notebook matplotlib 한글 깨짐

주피터 노트북으로 plot을 하는데 x축에 표시 되어야 할 라벨이 한글이라 폰트 지정을 해 주었다. https://iambeginnerdeveloper.tistory.com/40 python matplotlib 한글 깨짐 해결하기 | 주피터 노트북(Jupyter notebook) matplotlib 한글 깨짐 해결하기 아이펠 프로젝트 과제를 하면서 matplotlib를 사용하여 그림을 출력하려고 할 때 plot의 title을 한글로 지정하면 한글 폰트가 깨지는 현상이 있었다. 이전까지는 계속 영어로 출력을 해 왔기에 상관 iambeginnerdeveloper.tistory.com 아주 예전에 주피터 노트북에서 matplotlib를 사용하여 plot을 했을 때 한글이 깨지는 이슈가 있었고 그때 정리 해 둔..

Python

[OpenCV] Affine Transform & Perspective Transform

영상에서 글자 인식을 위한 OCR 프로젝트를 하면서 전처리 과정에서 가장 잘 썼던 두 변환에 대해 정리하고자 한다. 1. Affine Transform : 영상의 이동, 전단, 확대, 회전을 조합할 때 직사각형이 평행사변형으로 변환이다. 쉽게 말하면 회전, 평행 이동, 스케일링, 반전까지 모두 포함한 변환이다. affine transform은 선의 평행성이 유지 되면서 변환된다. Affine 변환을 하기 위해 매칭되는 3개의 점(pts1, pts2)이 있어야만 변환 행렬을 구할 수 있다. 이 점 3개의 이동 정보를 통해 마지막 점의 위치를 유추할 수 있게 된다. cv2.getAffineTransform을 통해 변환 행렬을 구한 후 cv2.warpAffine으로 변환 행렬을 img에 적용 시켜주면 된다. ..

Python

[Python] enumerate와 tqdm 같이 사용 하기, tqdm 사용법

python에서 반복문을 사용하면서 for문이 얼마나 진행되었는지 확인할 수 있는 방법 중 하나가 tqdm을 사용하여 progress bar를 나타내는 것이다. tqdm을 사용하면 progress bar로 진행률을 나타내 주는 것만 아니라 남은 시간까지도 확인할 수 있다. from tqdm import tqdm import time for i in tqdm(range(10)): time.sleep(0.1) 기본 사용 방법은 위와 같다. tqdm으로 감싸는 값이 __len__()을 가지도록 하면 래와 같은 결과물이 나오게 된다. enumertae나 zip은 __len__()을 가지기 않기 때문에 조금 다르게 사용 해야 한다. a = [1,2,3,4] b = [5,6,7,8] enumerate(tqdm(a)..

Python

[Python] Dictionary(딕셔너리) 생성 및 초기화, setdefault()

파이썬에서 딕셔너리를 생성할 때 마다 a = {} a['key']='value' 이렇게만 해 왔는데 iterable하게 값을 넣어주려니(ex. value에 list를 넣는다는지 등등) for문을 써야하는 게 불편했다. 다른 방법이 있는지 알아보니 setdefault()라는 방법이 있었다. a = {} feature = np.array([1,2,3]) a.setdefault(0, []).append(feature) a >> {0:[array([1,2,3])]} 존재하지 않는 키에 대해서도 값을 넣을 수 있으며 feature2 = np.array([4,5,6]) a.setdefault(0, []).append(feature2) a >> {0:[array([1,2,3]), array([4,5,6])]} 키가 ..

ML & DL

[밑시딥1] Chapter 8. 딥러닝

해당 포스팅은 '밑바닥부터 시작하는 딥러닝1'을 공부하고 정리, 요약한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. ◼️ 8.1 더 깊게 ◾ 8.1.1 더 깊은 신경망 그림 8-1과 같이 구성된 CNN을 만들고자 한다. 여기에서 사용하는 합성곱 계층은 모두 3x3 크기의 작은 필터로 층이 깊어지면서 채널 수가 더 늘어나는 것이 특징이다. 합성곱 계층의 채널 수는 앞 계층에서부터 순서대로 16, 16, 32, 32, 64, 64로 늘어간다. 그림과 같이 풀링 계층을 추가하여 중간 데이터의 공간 크기를 점차 줄여가고 마지막 단의 완전 연결 계층에서는 드롭 아웃 계층을 사용한다. 가중치 초깃값으로 He 초깃값을 사용하고 가중치 매개변수 갱신에는 Adam을 이용한다. import sys, os impo..

ML & DL

[밑시딥1] Chapter 7. 합성곱 신경망(CNN)

해당 포스팅은 '밑바닥부터 시작하는 딥러닝1'을 공부하고 정리, 요한 글입니다. 모든 내용은 해당 도서를 기준으로 합니다. ◼️ 7.1 전체구조 지금까지 본 신경망은 인접하는 계층의 모든 뉴런과 결합되어 있다. 이를 완전 연결(fully-connected)이라고 하며 완전히 연결된 게층을 affine 계층이라는 이름으로 구현했다. CNN도 지금까지 본 신경망과 같이 레고 블록처럼 계층을 조합하여 만들 수 있다. 합성곱 계층(convolutional layer)과 풀링 계층(pooling layer)이 새롭게 등장한다. CNN에서는 새로운 합성곱 계층(conv)과 풀링 계층(pooling)이 추가 되며 CNN 계층은 Conv-FeLU-(Pooling) 흐름으로 연결된다. 지금까지의 Affine-ReLU 연..

토오오끼
'파이썬' 태그의 글 목록