Python 23

에라토스테네스의 체

코딩 문제를 풀다보면 소수와 관련된 문제가 나온다. 예를 들어, '자연수 2 ~ 100 범위에서 소수를 출력하라' 라는 문제가 나온다면 prime = [] for i in range(2, 101): flag = 0 for j in range(2, i): if i % j == 0: flag = 1 break if flag == 0: prime.append(i) print(prime) [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] 위와 같이 반복문을 돌면서 i가 2 이상의 어떠한 값에 나머지 연산을 했을 때 값이 0이 나오는지 체크하면 된다. 하지만 이렇게 코드를 짜면 100,000..

Python 2021.07.20

Django와 MySQL 연동하기

Django에 기본 세팅돼있는 DB는 sqlite3이다. sqlite3의 경우 로컬에서 구동되는 DB이기 때문에 관리 비용, 네트워크 구성 등을 신경쓰지 않아도 되고 작은 크기와 간결함을 장점으로 꼽을 수 있다. 하지만 실제 서비스에 사용하기엔 부하에 방어적이지 못하고 동시에 많은 액세스에 대응하기 어렵다. 따라서 가장 범용적으로 쓰이는 MySQL과 Django를 연동하는 방법을 기술한다. MySQL 설치 방법은 생략하며, 사용한 툴은 MySQL Workbench이다. 1. 필요한 python 패키지를 설치해준다. 2. mysite/config 경로의 settings.py에서 기존 sqlite3 설정을 지우고 연동할 MySQL DB의 정보를 입력한다. - 여기서 USER와 PASSWORD는 기존 설치했던..

Python/Django 2021.07.18

input()과 sys.stdin.readline()의 차이

프로그래머스에서 문제를 풀 땐 크게 느끼지 못했는데, 백준에서 알고리즘 문제를 풀면서 유독 시간 초과 때문에 틀린 적이 여러 번 있어 이를 해결하는 과정에서 사용한 함수의 차이를 기록해놓는다. Python 2.x 두 함수의 차이를 설명하기 전에 Python 2.x 버전에 있던 raw_input()과 input() 함수를 파악해야 한다. Python 공식 문서에선 두 함수를 아래와 같이 설명한다. raw_input([prompt]) If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a..

Python 2021.07.15

Lv.1-약수의 개수와 덧셈

문제 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 내 코드 def find(n): cnt = 0 for w in range(2, n+1): if n % w == 0: cnt += 1 return cnt def solution(left, right): result = 0 for n in range(left, right+1): if find(n) % 2 == 1: result += n else: result -= n return result 문제 풀이 find() -> n을 2 이상의 수로 나누었을 때 나머지가 0인 개수를..

Python/Programmers 2021.07.10

Lv.1-숫자 문자열과 영단어

문제 문자와 숫자가 섞여있는 문자열 s가 주어질 때 문자는 숫자로 변환돼있는 값 s를 return 하시오. ex) one23seven -> 1237 내 코드 def solution(s): arr = { 'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9' } for w in arr: if w in s: s = s.replace(w, arr[w]) return int(s) 문제 풀이 알파벳과 그에 해당하는 숫자가 mapping된 dict 배열을 만들어놓은 후, 일치하는 key 값이 s 배열에 있다면 해당하는 value로 치환한다.

Python/Programmers 2021.07.08