공부/전반적인 프로그래밍 7

백준 1388 파이썬

이코테 dfs/bfs 공부하면서 책에 나온 문제들은 어려워서 백준에 난이도 낮은 문제를 풀어봤다. 처음에 (y== m-1 or graph[x][y+1] == '-') 이 부분을 (graph[x][y+1] == '-' or y== m-1)로 썼는데 indexerror가 계속 떴다. 에러 부분을 읽어봐도 원인을 못찾다가 혹시나 하는 마음에 바꿔보았더니 잘되었다. or 의 순서도 신경써야한다는 걸 배웠다. n,m = map(int, input().split()) graph = [] for _ in range(n): graph.append(list(input())) visited = [] for _ in range(n): visited.append([False]*m) def dfs(x,y): if x =n or..

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

전 포스팅에서 레벨은 깊이가 같은 노드들을 의미했다. 이번 시간에는 앞서 구했던 높이를 가지고 같은 레벨의 노드들을 구하려고 한다. 기본적인 과정은 이러하다. 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 ..

파이썬 자료구조 -트리 : 전위, 중위, 후위 순회

전위 순회(preorder)는 노드 방문 -> 왼쪽 자식 -> 오른쪽 자식 중위 순회(inorder)는 왼쪽 자식 -> 노드 방문 -> 오른쪽 자식 후위 순회(postorder)는 왼쪽 자식 -> 오른쪽 자식 -> 노드 방문으로 스캔한다. A,B,C만 있는 트리를 가지고 설명해보면, 전위 순회 : A->B->C 중위 순회 : B->A->C 후위 순회 : B->C->A 로 움직인다. 조금 더 설명해보자면 전위 순회는 가장 처음에 A를 방문, 중위 순회는 B에서 C로 가는 도중에 방문, 후위 순회는 B와 C를 방문하고 나서 A를 방문한다. 전체 트리를 보며 생각해보자. 전위 순회 : A->B->D->E->H->C->F->G->I 중위 순회 : D->B->E->H->A->F->C->I->G 후위 순회 : D-..

파이썬 자료구조 - 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..

html 기초 공부 내용 모음

속성 : 하나의 태그에 여러 개의 속성 가능 공백으로 구분, id=”” class=”” 속성들의 순서는 상관없다 안에 선언된 태그는 부모 태그를 벗어나면 안된다. 이런 느낌. 빈태그 : 시작태그만 존재하고 종료태그 존재하지 않음 > 내용이 존재하지 않음 브라우저가 이미지나 비디오처럼 외부 리소스를 삽입할 때 - 이런 식으로 내용이 없지만 경로를 제시하여 화면에 보이도록 주석 : 내용) - - > Html 구조 Doctype : 어떤 버전으로 작성으로 되어있는지 선언하는거(최상단) Lang 속성 : 언어 코드 Head : 문서의 기본 설정 등 Meta : 해당 문서에 대한 정보인 메타데이터를 정의할 때 사용 Title : 브라우저 탭 바에 나오는 제목 Body : 브라우저 화면에 출력 Head : 문서 내..

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

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