일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- flask
- datetime
- SUM
- itertools
- 자료구조
- python
- ceil
- timestamp
- 에라토스테네스의 체
- convention
- FOREIGN KEY
- 리스트 컴프리헨션
- enumerate
- floor
- project euler
- 세그먼트 트리
- Dictionary
- SUM()
- list comprehension
- 딕셔너리
- 네이밍
- mysql
- 2557
- BOJ
- 외래키
- 큰 수 나누기
- Codeforces
- lower_case_table_names
- 소수
- 파이썬
- Today
- Total
목록전체 글 (608)
늒네 기록
mysql을 쓸때와 또 달랐던 점은, 한 번 만들어놓은 칼럼들이 순서가 마음에 안 들어서 바꾸려고 했더니 pgadmin 페이지에서 방법이 바로 제공되지 않는 것으로 보였던 것이다. 그래서 구글링을 해봤더니, 흥미로운 글을 찾을 수 있었다. https://stackoverflow.com/questions/285733/how-do-i-alter-the-position-of-a-column-in-a-postgresql-database-table How do I alter the position of a column in a PostgreSQL database table? I've tried the following, but I was unsuccessful: ALTER TABLE person ALTER COL..
postgresql을 처음 써보면서 신기했던 건, mysql에서 봤던 auto increment 조건을 바로 붙여주는 옵션이 없는 대신 serial이라는 타입이 존재했던 것. https://www.postgresql.org/docs/current/datatype-numeric.html PostgreSQL: Documentation: 13: 8.1. Numeric Types Numeric types consist of two-, four-, and eight-byte integers, four- and eight-byte floating-point numbers, and selectable-precision decimals. Table 8.2 lists the available types. Table 8...
이전 글: [flask] 시작하기 이전 글의 빠르게 시작하기 예제를 계속 이어서 따라가보자. 첫 helloworld 예시는 주소, 포트로만 이루어진 http://127.0.0.1:5000/ 경로에 들어가면 작동하게 되어있는데, 이는 @app.route('/')가 주소 뒤에 아무 것도 붙이지 않았을 때 해당 함수 내부에 진입하도록 해주었기 때문이다. 그렇다면, route 내에 다른 주소를 넣으면 어떨까? 1 2 3 4 5 6 7 8 9 10 11 12 13 from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' @app.route('/hello') def hello(): retu..
문제 링크: http://codeforces.com/contest/1408/problem/B 음이 아닌 정수로 이루어진, 감소하지 않는 순서로 정렬된 리스트 a_1, a_2, ..., a_n이 주어져있을 때, 크기 n짜리 리스트 m개를 만들어서 각 리스트의 i번째 아이템을 다 더해서 a_i가 되도록 만들고자 한다. 이때, m개의 리스트들 각각은, 최대 k개의 서로 다른 원소로 이루어질 수 있다. 예를 들어, n = 5, k = 3, a = [1, 2, 3, 4, 5]로 주어져있다고 하자. a는 [1, 2, 0, 0, 0], [0, 0, 3, 4, 0], [0, 0, 0, 0, 5]의 3개의 리스트들을 같은 위치에 있는 원소들끼리 더해서 만들 수 있다. [1, 2, 0, 0, 0], [0, 0, 3, 4,..
숫자로 이루어진 리스트 x가 있을때, x에 있는 모든 숫자의 합은 sum(x)로 쉽게 구할 수 있다. 그렇다면 x에 있는 모든 숫자의 곱을 구하는 함수는 바로 없을까? 이런 생각을 하고 구글링을 해보다가 처음 lambda, reduce함수를 활용하는 방법을 알게 된 분들이 많을 거라고 생각한다. 처음 검색을 하다 보면 이런 코드를 맞닥뜨리게 된다. 1 2 3 from functools import reduce l = [1, 3, 5, 7] print(reduce(lambda x, y: x*y, l)) cs 매우 짧은 코드로, 출력된 결과를 보면 105로 원하는 답이 나왔다는 걸 알 수 있다. 그런데 도대체 여기서 무슨 일이 일어난 걸까? 이를 알기 위해서는 파이썬의 lambda와 reduce에 대해서 각..
코드를 짜다 보면 종종 주어진 선택지들 중에 몇 개를 선택해서 조합을 만들고, 그 조합들을 가지고 계산을 돌려야 할 일이 있을 때가 있다. 예를 들어, A, B, C, D 선택지가 있을때, 이 중에서 i) 중복을 허용하여 두 개를 순서대로 뽑아서 나열한다 -> AA, AB, AC, AD, BA, BB, BC, BD, CA, CB, CC, CD, DA, DB, DC, DD ii) 중복을 허용하지 않고 두 개를 순서대로 뽑아서 나열한다 ->AB, AC, AD, BA, BC, BD, CA, CB, CD, DA, DB, DC iii) 중복을 허용하지 않고 두 개를 뽑는다. 순서가 달라도 조합이 같으면 같은 걸로. ->AB, AC, AD, BC, BD, CD 이때 위의 i), ii), iii) 상황에서 각각 파이..
아주 단순하게 생각하면, 어떤 계산을 하고 싶은데, 그게 텍스트로 되어있는 경우에 딱 활용할만한 함수라고 생각하면 된다. 예를 들어, a@b@c@d 값을 구하고 싶은데, 이때 @칸에 +, -, *, /의 조합이 자유롭게 들어올 수 있다고 해보자. 그렇다면 @칸에 연산자를 집어넣은 뒤 결과를 어떻게 계산할 수 있을까? 1 2 x = eval('1+2/3*4') print(x) # 3.6666666666666665 cs 이런 상황에서 eval을 쓰면 바로 계산해준다! 검색해보면 eval함수 외에도 exec(), compile()함수가 있고, 다른 argument를 넣을 수도 있으며, 해당 함수를 사용하는 데에 장단점이 있는것 같지만, 이 글에서는 이런 함수가 존재한다는 사실만 적어두고 디테일한 내용은 추후 ..
프로젝트 오일러 97번은 앞에선 열심히 메르센 소수에 대한 설명을 하고, 그 다음엔 넌-메르센 소수 이야기를 하더니, 마지막에 가서는 '앞에 주어진 수의 마지막 10자리 수를 구하시오'라고 하는, 조금 김빠지는 문제다. 이 문제에서 계산해야 하는 수는 28433×2^7830457+1로, 2^7830457를 어떻게 빠르게 계산해내는지가 관건이다. 해당 숫자는 계속 계산하기엔 큰 숫자가 될 것이고, 어차피 우리에게 필요한 숫자는 마지막 10자리 수이며, 그렇기 때문에 계산을 하다가 11자리수가 넘어가면 마지막 10자리 숫자만 잘라서 계속 계산을 이어나가는 방법을 활용할 것이다. 그런데 그렇다고 해도 2^7830457의 마지막 10자리 수를 빨리 계산해내야 하는 문제가 남는다. 문제에 나이브하게 접근하면 이렇..
간단한 웹서버를 만들어보기 위해서 몇 가지 대안들을 보던 중 flask가 눈에 들어와서 한 번 시도해보기로 했다. flask의 helloworld 같은 예제들부터 따라서 만들어보는 것이 좋을것 같아 찾아보니 한국어로 된 도움말 documentation이 준비되어 있었고, 특히 빠르게 시작하기에 있는 내용을 그대로 따라해보면 기초적인 서버를 만드는 것부터 시작할 수 있어서 좋았다. 빠르게 시작하기 링크의 앞부분에 flask를 설치하지 않았으면 설치하는 것부터 시작하라며 다른 페이지 링크를 걸어주는데, 해당 링크에는 virtualenv를 활용하는 방법도 같이 자세히 설명되어 있다. 해당 내용에 관심 있는 개발자라면 같이 보는 것도 좋지만, 굳이 따라하지 않아도 작동에는 큰 문제가 없으니 아래와 같이 로컬에 ..
프로젝트 오일러 21번 문제에서 말하는 amicable numbers란, 다음 조건을 만족해야 한다. - d(x)란 x의 진약수(proper divisor, x를 제외한 x의 양의 약수)들의 합 - x != y 이고, d(x)==y, d(y)==x이면 x, y 둘 다 amicable number 이 문제는 10000보다 작은 amicable number들의 합을 구하는 것이 목표다. 이를 위해서 문제를 아래의 과정들로 쪼개겠다. - 10000보다 작은 양의 정수들을 소인수분해한 결과를 담아놓는 list를 만들고, - 각 양의 정수마다 d(x)를 계산하는 함수를 만들어서 이 값을 담아놓는 list를 만들고, - x를 정해서 y=d(x), z=d(y)를 만족하면서 x != d(x)를 만족하는 x들을 찾아 더..