파이썬

    기본 파이썬을 변경하는법 (2.7 to 3)

    python3 -V로 버전확인시에는 3.6버전이 잘 나왔지만 python -V 로 버전확인시 2.7로 버전이 확인되는 문제사항이 있었다. 해당 문제에 대한 내용을 기록한다. 과정은 다음과 같다. 1. PPA 설치 sudo add-apt-repository ppa:deadsnakes/ppa 2. 패키지 업데이트 sudo apt-get update 3. 파이썬 2를 3으로 업그레이드 sudo apt-get install python3.6 4. 기본 파이썬을 변경 sudo rm /usr/bin/python sudo ln -s /usr/bin/python3 /usr/bin/python 5. 최종적으로 기본 버전을 확인 python -V

    [3] 백테스트로 자동매매 성능 확인하기

    현명한 투자자라면 자신의 알고리즘을 무작정 전투에 내보내기전에 과거데이터를 이용해 수익률을 확인할 것이다. 물론 과거 데이터에 대한 수익이 무조건 보장되진않는다. ✏️ 과거데이터 추출 get_ohlcv pastPrice = pyupbit.get_ohlcv(ticker,interval='minutes30', count=1000) 코드를 실행시키는 시간부터 1000분전까지의 30분간격의 데이터를 불러와 pastPrice변수에 저장한다. 1분봉, 3분봉, 5분, 15분 등의 데이터는 minutes1, minutes3, minutes5 이런식으로 바꿔주면 된다. pastPrice를 출력때려보면 이런게 나온다. 필요한걸 뽑아내려면 어떻게 다듬어야할까? 우선 저게 뭔지 보자. print(type(pastPrice)..

    [2] 파이썬으로 업비트 거래하기

    ✏️ 업비트 API 신청하기 https://upbit.com/service_center/open_api_guide 들어가서 계좌만들고 OpenAPI 신청을 하면된다. 나는 그냥 다 체크했다. IP의 경우 네이버에 내IP라고 검색하면 찾을 수 있다. access_key랑 secret_key는 메모장에 복사해놓고 잘 저장해놓자. ✏️ pyupbit 업비트 API를 랩핑한 파이썬 라이브러리가 있다. pyupbit를 이용할거다. 우선 내가 필요한 내용만 정리할 것이기 때문에 더 필요한 내용이 있다면 아래 깃허브주소를 참고하기바란다. https://github.com/sharebook-kr/pyupbit GitHub - sharebook-kr/pyupbit: python wrapper for upbit API p..

    [1] 파이썬으로 코인 자동매매하기

    군대에서 뻉이치면서 딴생각만하다보니 아이디어가 떠올라 오늘 휴가나온김에 구현하려한다. AWS에서 계속 돌아가는 자동매매장치를 만들 생각인데 알고리즘을 공개할 생각은 없고 제작과정을 정리해보려한다. 누군가 보는 사람이 있다면 본인의 알고리즘을 적용해 제작해보길 바란다. 계획 [1] 파이썬 이용 [2] 업비트 OpenAPI 이용 [3] AWS 이용 [4] crontab 이용 [5] 과거데이터로 간단하게 백테스팅해본 후 계수를 조정하고, 소액으로 며칠 돌려본 후 액수를 늘릴 계획이다. - 후기도 올리겠다. 물론 휴가기간동안 완성될진 모르겠다. 나름 첫 휴가라 좀 놀고싶다. 과정을 차차 업로드하겠다.

    NQueen 문제 파이썬과 자바스크립트 풀이

    백준 9663번 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net ✏️ 구상 N*N 체스판 위에 N개의 퀸을 서로 공격할 수 없게 배치해야한다. 퀸의 움직임은 직선방향, 대각선방향이다. 그렇다면 생각나는 기본적인 로직은 우리는 퀸을 한줄에 하나씩만 배치할 수 있다는 것이다. 우선 배치한다고 생각해보고 하나씩 손으로 배치를 해보자. 두 번째 줄에선는 1,2번째 칸에 퀸을 배치할 수 없다. 두번째 줄에도 배치했으니 이제 세번째로 넘어간다. 세번째줄에 배치가 불가능하다. 따라서 다시 두번째 줄로 돌아가 4번째 칸에 배치한다. (3번..

    백준 1915: 가장 큰 정사각형 해설- python

    ✏️ 문제 https://www.acmicpc.net/problem/1915 1915번: 가장 큰 정사각형 첫째 줄에 n, m(1 ≤ n, m ≤ 1,000)이 주어진다. 다음 n개의 줄에는 m개의 숫자로 배열이 주어진다. www.acmicpc.net ✏️ 풀이 시작점에서 대각선(n,m)방향으로 뻗어나가면서 사각형이 만들어지는지를 확인한다. [i][j]를 기준으로 [i-1][j], [i][j-1], [i-1][j-1]이 모두 0이 아니라면 최소사각형(2x2)가 만들어졌다는 뜻이다. 아래 코드대로 인풋 매트릭스에 값을 더해가다 보면, 이런식으로 매트릭스가 채워질거다. 가장 큰 값이 정사각형의 한변의 길이가 되고 크기는 그 길이의 제곱이된다. n,m=map(int,input().split()) matrix=..

    파이썬 collections deque 사용법과 응용

    ✏️ deque Stack이나 queue처럼 한 방향에서 삽입과 삭제가 일어나는게 아니라 양방향에서 삽입과 삭제가 일어나는 자료구조이다. 파이썬에서 list를 사용하는 것과 유사하지만 deque를 사용하는 이유는 시간복잡도 때문이다. 리스트에서 0번 인덱스를 삭제한다고 생각해보자. 이때 리스트 내부에서는 0번 인덱스를 제거하고 끝이 아니라 뒤에있는 원소들을 앞으로 하나씩 당겨주는 연산을 더 수행하게된다. 따라서 list의 삭제연산은 O(n)이 걸리는데 반면 deque의 삭제연산은 O(1)이다. 따라서 push, pop이 빈번한 알고리즘의 경우 list보다 deque를 사용하는 것이 효율적이다. ✏️ collections.deque 1. collections.deque.append(x) : deque의 맨..

    백준 2579: 계단오르기 해설- python

    ✏️ 문제 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net ✏️ 풀이 케이스는 두가지로 분리된다. 이전에 두 계단을 연속으로 오른 경우. 그리고 3계단 이전에는 두계단을 오르고 바로 이전에서 현지점까지 연속으로 올라오는 경우. 본 문제에서는 리스트를 두개 만들었다. i번째 계단까지 최대값을 저장하는 dp[] & 문제에서 준 계단점수를 저장하는 arr[] 이를 점화식으로 나타내보면 아래와 같을 것이다. 1. dp[i-2] + arr[i] 2. dp[i-3] + arr[i-1] + arr[i] n=int(input()) ar..

    [Python & Algorithm] Dynamic Programming(동적프로그래밍)

    ✏️ Dynamic Programming 큰 문제를 작은 문제로 나누어 푸는 문제를 이야기한다. 이름에 의미는 없다. 그냥 말이 멋있어서 이렇게 지었다고 한다. 1) 분할정복과의 차이 '작은 문제가 중복이 일어나는지 아닌지' 에 차이가 있다. 분할정복은 큰 문제를 해결하기 어려워서 단지 작은 문제로 나누어서 푸는 방법이다. 특징은 작은 문제에서 반복이 일어나는 부분이 없다는 점이다. 하지만 동적프로그래밍은 작은 부분문제들이 반복되는 것을 이용해 문제를 풀어낸다. 2) 다이나믹 프로그래밍의 방법 모든 작은 문제들은 한번만 풀어낸다. 따라서 정답을 구한 작은 문제를 어딘가에 메모해둔다. 다시 그보다 큰 문제를 풀어나갈 때 똑같은 작은 문제가 나타나면 앞서 메모한 작은 문제의 결과값을 이용한다. 3) 다이나믹..

    [Python & Data Structure] Graph

    ✏️ Graph (그래프의 개념) 연결되어 있는 객체간의 관계를 표현하는 비선형 자료구조 가장 일반적인 자료구조의 형태이며, Tree 도 그래프의 특수한 경우이다. 하나의 점을 Vertex 라고 한다. 하나의 선을 Edge 라고 한다. Link 라고도 함. ✏️ Graph (용어) 비가중치 그래프 / 가중치 그래프 : 비가중치 그래프는 각 vertex 간의 연결 유무만을 판단한다. 가중치 그래프는 각 간선(edge)에 가중치를 부여한 형태로 예를 들면 edge에 비용을 부과하는 형식으로 가중치가 부과될 수 있다. 위의 그림은 가중치 그래프이다. 무향(undirected) 그래프 / 유향(directed) 그래프 : 무향 edge는 양방향의 의미를 가진다. (A,B)=(B,A) 로 순서에 의미를 가지지 않..