본문 바로가기

Python

파이썬 연결 리스트 singly linked list 1. 지정 노드의 왼쪽 또는 오른쪽에 삽입하는 것 구현 2. node 자체를 찾는 함수 3. node의 data를 찾는 함수 class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None self.current = None def append(self, data): node = Node(data) if self.head is None: # 노드가 없는 경우 self.head = node self.current = node else: # 노드가 있는 경우 self.current = self.head while self.current.next: ..
파이썬으로 기상청 API 호출하기 동네예보정보조회서비스 동네예보정보조회서비스는 공공데이터포털에서 제공하는 동네의 날씨 정보 API다. https://www.data.go.kr/dataset/15000099/openapi.do 공공데이터포털 국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Dataset)와 Open API로 제공하는 사이트입니다. www.data.go.kr 사이트 접속 후 회원가입, 로그인을 해야 한다. API를 받아내려면 로그인하고 요청을 해야 한다. 로그인을 하고 동네예보정보조회 서비스 Open API에 접속하면 활용신청 버튼이 있다. 양식을 작성하고 신청한다. 몇시간 또는 며칠 정도의 시간이 지난 후 공공데..
.pyc란 무엇인가? 파이썬은 인터프리터 언어라고 알려져있다. 파이썬을 실행하면 나오는 .pyc는 무엇일까? python 언어를 컴파일해 놓은 파일인데 이 안에는 원시 파이썬 코드가 컴파일된 byte 코드가 존재한다. 인터프리터 언어인데 byte 코드로 컴파일을 했다니 좀 이상하다. 파이썬 가상 머신(virtual machine)은 컴파일러와 인터프리터가 있다. 인터프리터는 .py 파일에 작성된 원시 파이썬 코드를 곧바로 해석할 수 없다. 그렇기 때문에 우선 원시 코드는 byte 코드로 변환되어야 한다. 이 과정에서 .pyc 파일이 생성되고 그 안에 byte 코드가 작성된다. .pyc 파일이 이미 생성되어 있으면 다시 컴파일할 필요 없이 바로 시스템에 byte 코드를 적재한다. .pyc 파일은 캐시처럼 취급된다. 미리 byt..
백엔드 개발 인턴 회고 학원 장고 수업 3.18~4.12 회사 생활 4.15~7.17 미니 프로젝트 코드 https://github.com/copyNdpaste/MiniYogiyo 3개월 간의 회사 생활에 대해 아무렇게나 의식의 흐름대로 작성한다. 아주 운이 좋게도 서초역에 있는 핫한 회사에서 인턴 생활을 하게 되었다. 첫 한 달 간은 종로에 있는 아주 구린 IT 학원에 가서 장고 기초 수업을 들었다. 이후 집에서 지하철과 버스를 타고 서초역 근처 회사로 출근했다. 회사 문화는 아주 좋았다. 애자일스러운 회사로 매일 아침마다 스탠드업 미팅을 하고 주기적으로 회고를 한다. 개발 회의도 자유로운 분위기에서 밝게 하는 것 같고 코드를 작성하고 Pull Request를 하면 여러 개발자들이 코드 리뷰를 해준다. 코딩을 한 다음 필수적..
맥북에서 파이썬 3 설치하기, alias 설정하기, python 2 뜰 때 https://www.python.org/ 에 들어가서 상단 카테고리를 보면 Downloads가 있다. 마우스 커서를 갖다 대면 자동으로 운영체제에 맞는 버튼이 뜬다. Python.3.x.x 클릭. 설치 후 터미널 창에 가서 python --version을 입력하면 엉뚱하게 2.x.x가 뜬다. 맥 os에선 기본으로 python2가 설치되어 있는 것 같다. 터미널에서 python을 입력했을 때 3 버전을 쓰고 싶다면 vim ~/.bash_profile(zsh 사용자라면 vi ~/.zshrc) 입력 후 파일 안에 alias python='python3' 를 입력하고 저장한다. 터미널에서 source ~/.bash_profile 를 입력한다. python --version을 입력하면 python 3.x.x가 ..
Kruskal's Algorithm and Union-Find 크루스칼 알고리즘 파이썬 python 최소 비용 신장 트리를 만들기 위해 쓰이는 크루스칼 알고리즘. 일단 그래프에서 최소 비용인 엣지들을 오름차순으로 나열한다. 사이클을 만들지 않는 최소 비용인 엣지를 선택한다. 선택된 엣지가 노드의 총 개수 -1 이면 끝. 말은 쉽다. 그래도 말이 최소 비용 신장 트리지 복잡하게 트리를 만드는 과정은 없다. 배열로 끝낼 수 있다. 변의 개수 E, 꼭지점의 개수 N이라고 할 때 O(ElogV)의 시간 복잡도. Union-Find를 알아야 한다. 두 노드가 같은 집합에 속하는 지를 판단하기 위해 쓰인다. Find로 각 노드가 어느 집합에 있는 지 확인, Union으로 각 집합을 합치기. 개선하기Union:집합을 합칠 때, 두 집합 중 크기가 작은 것이 큰 집합에 붙는 것이 효율적이다.Find:한 노드가 어느 ..
Binary Search Tree BST 이진 탐색 검색 트리 파이썬 python 삽입, 탐색은 비교적 쉬워서 좀 어려운 삭제에 대한 그림을 그렸다. 1. 초기 이진 탐색 트리2. 삭제할 key를 찾았고 이를 node라고 한다. node의 오른쪽 자식 중에 가장 작은 값을 찾는다. child가 된다. 40은 parent.3. 그림에서 번호를 1~4까지 붙인대로 코드가 작성되어 있다. 지우려는 노드와 그 노드의 오른쪽 자식들 중 가장 작은 값을 바꾸는데, 말은 쉽지만 해야할 일들이 있다. (1) 노드의 왼쪽 자식은 child의 왼쪽 자식에 붙이기. (2) child의 오른쪽 자식은 parent의 왼쪽 자식으로 만들기 (3) 노드의 오른쪽 자식은 child의 오른쪽 자식 (4) 마지막으로 child를 node로 만들면 기존 node에 child가 덮어씌워진다.4. child.left에 n..
백준 2775번 부녀회장이 될테야 0층은 1~n호에 각 호에 대응되는 인원이 거주한다.각 층의 1호에는 1명만 산다. 1층의 2호는 0층의 1호와 2호를 합하면 된다. 배열로 표현하면 arr[1]+=arr[0]이다. 0층부터 k층까지의 n호를 쭉 구하면 배열이 갱신되면서 각 층의 각 호에 사는 사람들이 나온다. 마지막으로 나온 배열의 마지막 인덱스에 있는 값이 찾고자 하는 값이 된다. 4층 1 6 21 56 126 3층 1 5 15 35 70 2층 1 4 10 20 35 1층 1 3 6 10 15 0층 1 2 3 4 5 1호2호 3호 4호 5호 t=int(input()) for i in range(t): k=int(input()) n=int(input()) arr=[j for j in range(1,n+1)] for l in range(..