반응형

Python 18

Python 이해하기 쉬운 코드 이름 짓기

혹시 이런 통계를 본 적 있는가? 아무래도 내가 이해하기 쉽기 위해, 그리고 남들도 이해하기 쉽게 하기 위해 함수명, 파일명, 변수명 등등 이름 짓는 것이 가장 귀찮은 일들중 하나일 것이다. 그렇다면, 변수명을 잘 짓는 방법도 배워두면 어떨까 여기서는 파이썬에 특화된, 변수명 잘 짓는 방법을 알려주고 있다. 해당 포스팅은 [클린코드, 이제는 파이썬이다] 저서의 일부입니다. 대소문자 표기법 파이썬은 대소문자가 구분되는 언어이며, 공백이 포함될 수 없는 특징이 있다. 널리 알려진 몇 가지 표기법에 대해 알아보자. 스네이크 표기법 : this_is_snake_case 이와 같이 언더바 _ 와 영문 소문자를 사용한다. 카멜 표기법 : thisIsCamelCase 이와 같이 단어를 언더바가 아닌 대문자로 구분한다..

가독성 좋은 파이썬 코드 작성방법

보기 좋은 코드로 작성하는 것은 프로그래밍 유지 보수를 도와주는 필수 스킬이다. 초심자는 단순히 기술적 지식을 늘리거나, 코드를 작동하게 하는 것에 의의를 두어 이런 부분을 신경쓰지 않을 수도 있다. 하지만 자신의 코드를 나중에 볼 때, 혹은 남에게 보여주며 도움을 구할 때, 함께 프로그래밍 할 때 등 생각보다 가독성 좋은 코드를 작성해야하는 것은 기술을 구현하는 것만큼 중요하다. 지금부터 파이썬만의 가독성 좋은 클린코드를 작성하는 방법을 알아보자. 해당 포스팅은 [클린코드, 이제는 파이썬이다] 저서의 일부입니다. 용어 정리 Code Formatting : 코드 포매팅, 소스코드에 일련의 규칙을 적용하여 특정 형식을 갖추게 하는 것 Style Guide : 스타일 가이드는 특정 집단에서 일련의 코드 포메..

파이썬으로 신입 취업하기

학부 생활동안 파이썬만 주구장창 팠습니다. 물론 학교 수업을 통해 C, JAVA도 배우긴 했지만, 기초 수준에서 벗어나지 않았습니다. 웹 개발도 Django, Flask로 개발하였고, 데이터 분석이나 ML/DL을 다루면서 자연스럽게 파이썬을 더 많이 더 깊게 파게 되었습니다. 그리고 취업 시즌이 다가왔고, 멘붕이 올 수밖에 없었습니다. 저와 같은 고민을 가지신 모든 이들을 위해 적습니다. 우선 파이썬으로 지원할 수 있는 직군에 대해 살펴봅시다. 크게 아래와 같은 세 가지로 구분될 수 있습니다. 1. 웹 백엔드 개발 Django나 Flask로 웹 백엔드를 개발하는 직군에 지원해볼 수 있습니다. 하지만 대한민국은 흔히 스프링 공화국이라 불릴만큼 대부분의 기업에서 Java Spring 좋아합니다. 대충 취업 ..

경험/취업 2021.12.12

[Python opencv] cv2 색상 구분 기준으로 라인 그리기

이미지에서 색상이 변경되는 곳에 점을 찍어주어 라인을 그려주는 방법입니다. 이미지에는 수십만 가지 색상이 존재합니다. 아무리 간단해 보이는 이미지도 수만 가지 이상은 됩니다. 따라서 색상을 기준으로 라인을 그리기 위해서 우선, 색상 단순화가 먼저 진행되어야 합니다. 색상 단순화 알고리즘은 여기서 확인할 수 있습니다. 링크 라라랜드 포스터를 가지고 실험을 해보겠습니다. 우선, 이미지에서 색상을 단순화시킵니다. 32개의 색상으로 단순화시킨 결과입니다. 이미지가 그림처럼 변환된 모습을 볼 수 있습니다. 그럼 이제 색상 변경 지점을 기준으로 선을 그려보겠습니다. import cv2 import numpy as np def drawLine(colorImage): # 라인 그려줄 캔버스 (input 이미지와 sha..

[Python] 백준 14499번 : 주사위 굴리기

※문제 출처 https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도 www.acmicpc.net 명령을 통해 주사위가 계속 움직이는 프로그램입니다. 주사위를 클래스로 설정하여 구현했습니다. 주사위 모든 면의 숫자를 알 수 있게 dictionary를 선언해줍니다. dice = { key : 주사위 면, value : 적힌 숫자 } changeDice 함수 방향을 입력하면 주사위의 모양이 변경됩니다. 주사위 모양은 바..

baekjoon 풀이 2021.04.18

[Python] DFS, BFS 알고리즘

# 전역 변수 # 트리를 딕셔너리 형태로 표현 # Key: 노드 / Value : 하위 노드 list graph = { 1:[2,3,4], 2:[5], 3:[5], 4:[], 5:[6,7], 6:[], 7:[3] } DFS (깊이 우선 탐색, Depth First Search) 루트 노드(최상위)부터 리프 노드(최하위)까지 탐색한 후, 다시 올라와서 내려가는 방식 스택(Stack)을 활용할 수 있음 재귀(Recursion) 함수를 활용할 수 있음 # 재귀 함수 이용한 DFS # Input : 최상위 노드 값 def recursion_dfs(node, discovered=[]): discovered.append(node) # 탐색한 노드에 추가 for x in graph[node]: # 해당 노드 하위의 ..

[Python OpenCV] 이미지를 그림화 하기 (색 일반화)

OpenCV를 활용하여 이미지를 그림처럼 바꾸어주는 방법 먼저 이미지를 읽어줍니다. import cv2 import numpy as np image = cv2.imread("./test.jpg") 이미지를 Blur 처리 해주어야 합니다. Blur 종류에는 여러가지가 있는데, 이미지에서 라인(경계선)을 살리기 위해 bilateralFilter 방식을 적용합니다. 함수를 만들어 주겠습니다. def blurring( image, radius = 10, sigmaColor = 50 ) : qimg = image.copy() #이미지 복사 # 이미지 크기에 따라 blur 효과의 정도를 달리합니다. sigmaColor += (qimg.shape[1] * qimg.shape[0]) // 100000 radius +=..

[Python] Numpy Array를 DB (SQLite)에 저장하기

Image Processing 관련 project 진행 도중 numpy array를 sqlite3에 저장할 필요가 생겼습니다. 방법을 찾던 도중 가장 괜찮은 방법을 소개하겠습니다. 우선, 필요한 모듈을 import 해줍니다. import sqlite3, io 1. Numpy Array -> DB Text > DB에 INSERT 할 때, array를 text로 변경해주는 함수입니다. # nd.array to text when Insert DB def adapt_array(arr): """ http://stackoverflow.com/a/31312102/190597 (SoulNibbler) """ out = io.BytesIO() np.save(out, arr) out.seek(0) return sqlite..

[Python] 백준 16637번 : 괄호 추가하기

https://www.acmicpc.net/problem/16637 [Problem] 길이가 N인 수식이 있다. 수식은 0보다 크거나 같고, 9보다 작거나 같은 정수와 연산자(+, -, ×)로 이루어져 있다. 연산자 우선순위는 모두 동일하기 때문에, 수식을 계산할 때는 왼쪽에서부터 순서대로 계산해야 한다. 예를 들어, 3+8×7-9×2의 결과는 136이다. 수식에 괄호를 추가하면, 괄호 안에 들어있는 식은 먼저 계산해야 한다. 단, 괄호 안에는 연산자가 하나만 들어 있어야 한다. 예를 들어, 3+8×7-9×2에 괄호를 3+(8×7)-(9×2)와 같이 추가했으면, 식의 결과는 41이 된다. 하지만, 중첩된 괄호는 사용할 수 없다. 즉, 3+((8×7)-9)×2, 3+((8×7)-(9×2))은 모두 괄호 안..

baekjoon 풀이 2021.03.28

[Python] 백준 4153번 : 직각 삼각형 판단하기

https://www.acmicpc.net/problem/4153 [Problem] 과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오. [Input] 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. [Output] 각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다. [ 풀 이 ] 직각 삼각형 판단은 간단합니다. "제일 긴 변의 제곱 = 나머지 두 변 제곱의 합" 위 조건을 만족하면 되는거죠. 세 변의 길이가 주어졌으니, max() 함수로 제일 긴..

baekjoon 풀이 2021.03.27