파이썬 5

2606 백준 파이썬

이것이 코딩 취업을 위한 코딩 테스트다를 참고하여 풀었다. 이코테 예제에서의 'graph'는 하나의 노드와 연결된 모든 노드들을 말하는 반면 2606문제의 입력은 하나의 노드와 그와 연결된 하나의 노드를 말해주기 때문에 이코테의 bfs 소스코드를 이용하려면 '하나의 노드와 그와 연결된 하나의 노드'를 '하나의 노드와 연결된 모든 노드들'로 바꿔줘야 했다. 그래서 본 코드에선 함수 'graph_convert'를 이용하여 이코테 소스코드를 사용할 수 있도록 만들었다. from collections import deque n = int(input()) r = int(input()) graph = [] for _ in range(r): graph.append(list(map(int, input().split()..

공부/백준 2023.01.03

파이썬 자료구조 - 트리:레벨

전 포스팅에서 레벨은 깊이가 같은 노드들을 의미했다. 이번 시간에는 앞서 구했던 높이를 가지고 같은 레벨의 노드들을 구하려고 한다. 기본적인 과정은 이러하다. 1. 루트 노드와 알고 싶은 레벨을 설정한다. 2. 루트에서 하위 노드들로 내려오며 레벨-1을 한다. 3. 레벨이 1이 되면 현재의 노드들을 출력한다. 아래 코든 전체 레벨을 구하기 위한 코드이고 특정 레벨만 알고 싶으면 3번째 줄의 for문을 이하를 수정하면 된다. def level(self): h = self.height(self.root) for i in range(1,h+1): self._level(self.root,level) print() def _level(self, node, level): if node is None: return ..

파이썬 자료구조 - 트리 : 높이

늦었지만 먼저 트리 관련 용어들을 정리하고 시작한다. 루트(root) : 트리의 최상단에 위치한 노드(해당 그림에선 A) 깊이 : 어떠한 노드와 루트와의 거리 레벨 : 깊이가 같은 노드들의 집합 높이 : 루트와 가장 멀리 떨어진 노드와의 거리 이번 시간에는 높이를 찾아 볼 것이다. 재귀를 이용해 왼쪽 자식으로 끝까지 이동한 다음, 0을 리턴한다. 이는 좌우 하위 노드가 None이면 끝까지 이동한 것으로 생각할 것이다. 거슬러 올라가며 좌우의 하위노드에서 리턴한 값들 중 값을 비교하여 가장 큰 값에 +1을 하여 리턴한다. 코드를 보자. def height(self,node): if node is None: return 0 else: lheight = self.height(node.left) rheight ..

파이썬 자료구조 - Tree

이진 트리(binary tree)는 각각의 노드가 최대 두 개의 자식 노드를 가지는 트리형 자료구조로, 자식 노드를 각각 왼쪽 자식 노드와 오른쪽 자식 노드라고 한다. 아래 코드에선 Node 클래스에서 left를 왼쪽 자식으로, right를 오른쪽 자식으로 표현했다. BinaryTree 클래스는 트리의 맨 위쪽(root)을 정해준다. 각 알파벳에 해당하는 노드를 만든 후, add___로 연결한 다음, 마지막에 root를 정해주는 방식으로 진행할 것이다. class Node: def __init__(self, item): self.item = item self.left = None self.right = None def addLeft(self, Node): self.left = Node def addRig..

초보자 웹서비스 만들어보기 - 크롤링(사진 모으기)

코딩을 가장 빠른 방법은 '어떻게든 서비스를 구현해보라' 라고 하길래 한번 도전해보았습니다. 그래서 처음 목표는 강아지 판별기입니다. Teachable Machine을 이용하려면 사진 데이터가 필요합니다. 그래서 크롤링을 구현해서 사진 데이터를 모으는 것부터 하려고 합니다. 님 유튜브를 참고하여 만들었습니다. *크롤링 : 웹사이트(website), 하이퍼링크(hyperlink), 데이터(data), 정보 자원을 자동화된 방법으로 수집, 분류, 저장하는 것. 주의 : 조코딩님 유튜브에는 크롤링 관련 영상 2개 중 셀리니움을 선택하셔야 합니다. 셀리니움(selenium)이란? 구글에 쳐보니 원어로는 이렇게 되어있네요. [Selenium is a powerful tool for controlling web b..