본문 바로가기

전체 글276

[자료구조] Python으로 구현하는 자료구조 (3) Tree 이번에는 Tree와 BinaryTree에 대해서 알아보자. 출처 : 프로그래머스 어서와! 자료구조와 알고리즘은 처음이지? Tree의 기본 용어 Tree는 그래프의 특이한 형태 중 하나이다. 수학적으로 정의하면 회로, 즉 순환되는 부분이 없고 두 노드를 연결하는 간선이 많아야 1개인 구조이다. 사진을 통해 Tree의 예시 및 용어를 확인해보자. 설명을 위해 위키피디아의 트리 사진에 약간의 붙임을 달았다. - A : 최상단의 노드로, 트리의 루트 라고 부른다. - B와 C : B와 C를 부모 자식 관계라고 본다. B는 C의 부모 노드이다. C는 B의 자식 노드 중 하나이다. - 노드의 차수란, 가지고 있는 자식의 수이다. A와 B의 경우는 차수가 2인 것이다. - 자식이 하나도 없는 C의 경우는 말단 노드로.. 2021. 4. 21.
[알고리즘] Stack - 수식의 표현(수정) 프로그래머스 데브코스 진행 중 배우게 된 알고리즘 관련 내용을 정리해보았다. 출처 : 프로그래머스 어서와, 자료구조와 알고리즘은 처음이지? 문제 설명 '문자열'로 주어진 수식이 있다. 이 수식의 값을 계산할 수 있을까? 중위 표현식, 후위 표현식 중위 표현식이란, 우리가 흔히 표현하는 수식의 형태를 뜻한다. 예시) (A + B) * (C + D) 후위 표현식이란, 연산자를 뒤에 표현하는 방법이다. 위의 식을 후위 표현식으로 바꾸면 다음과 같다. 예시) (A + B) * (C + D) -> AB+CD+* 1단계) 중위 표현식을 후위 표현식으로 변경 우리가 사용하는 중위 표현식으로는 수식의 값을 올바르게 계산하기가 어렵다. 그 이유는 다음 두 가지가 존재한다. - 사칙연산에 우선순위가 존재한다. 또한 우선순.. 2021. 4. 20.
[DevCourse] 0419-0420 TIL 데브 코스를 배우면서 배우는 내용과는 별도로, 간단하게, 짤막하게 깨달은 내용들을 TIL로 정리하고자 한다. 1. 자료구조를 배우면서 비교적 복잡한 코드를 참고, 작성할때가 많아졌다. 이에 따라 Indentation의 실패로 한참을 해멘 경우가 많았는데, 위에서 아래 순서로 쓰는 것이 아닌, 큰 묶음부터 차근차근 나눠서 작은 부분으로 들어가야 실수하지 않음을 깨달았다. (특히, If문 작성시 한쪽을 다 끝내고 다음 큰 묶음을 들어가는데 그게 아닌, 큰 조건 정도는 적자) 2. 같은 맥락에서, 함수를 작성할 때에도 일단 입력값과, 리턴값부터 작성 하면 무엇을 해야 할지 더 알기 명확해보인다. 3. 노드를 보는건지, 전체 자료구조를 보는 건지 헷갈리지 말자. 4. 반례에 당황하지 말자. 혹은 반례를 생각하는.. 2021. 4. 20.
[자료구조] Python으로 구현하는 자료구조 (2) Stack & Queue 이번에는 스택과 큐에 관련된 내용을 정리하였다. 출처 : 프로그래머스 어서와! 자료구조와 알고리즘은 처음이지? 이번 장에서는, 스택의 응용인 연산자 관련 내용은 별도로 알고리즘 파트로 정리하고 스택과 큐의 구현부터 정리한다. Stack이란? Stack은 바닥이 막혀있는 항아리 형 구조라고 생각하면 편하다. 즉, 마지막에 들어온 것이 가장 먼저 빠져 나오는 구조이다. (Last in, First out) 형태의 구조이다. Stack에서 사용할 수 있는 연산들은 다음과 같다. 1. Stack의 길이를 반환하는 연산 : size 2. Stack이 비어있는지 확인하는 연산 : isEmpty 3. Stack에 원소를 넣는 연산 : push 4. Stack에 원소를 제거하는 연산 : pop (물론 비어있으면 Und.. 2021. 4. 20.
[Python] 프로그래머스 Lv 1. 나머지 한 점 프로그래머스 Lv 1. 나머지 한 점 풀이를 통한 배운 내용을 정리한다. 문제는 간단하다. x, y축에 평행한 직사각형의 세 점이 주어질 때, 나머지 한 점이 어디있는지를 찾는 것이 문제이다. 각 x, y값 별로 2개씩 나와야 한다는 것에서 1개만 나온 값을 찾는 것이 목표이다. 내가 짠 코드는 다음과 같다. def solution(v): answer = [0, 0] x_axis = [0, 0, 0] y_axis = [0, 0, 0] for i in range(0, 3): x_axis[i] = v[i][0] y_axis[i] = v[i][1] if x_axis[0] == x_axis[1]: answer[0] = x_axis[2] else: if x_axis[0] == x_axis[2]: answer[0].. 2021. 4. 20.
[자료구조] Python으로 구현하는 자료구조 (1) Linked_list Programmers Dev Course Week1에서 기본적인 자료구조 관련 내용에 대해 학습중이다. 그 중 이번에 처음 접해본(!) Linked list에 대해 내용을 정리하고자 한다. 출처/프로그래머스 어서와! 자료구조와 알고리즘은 처음이지? Linked_list란? Linked list는 그냥 List와는 다르게 각 원소들이 연결되어 있는 형태를 가진다. 여기서는 원소 대신 Node라는 표현을 사용한다. Node는 기본적으로 - 자기 자신이 가지고 있는 Data - 그 다음 노드가 무엇인지 밝혀주는 Link의 형태로 구성된다. 이는 클래스의 형태로 구현될 수 있다. class Node: def __init__(self, item): self.data = item self.next = None 이제.. 2021. 4. 20.