전체 글192 25일차: 순회(Traversal) ❯ Tree traversal 트리의 모든 노드를 한번씩 방문하는 것을 트리 순회라고 한다. 트리 구조는 계층적 구조를 가지므로 모든 노드를 순회하는 방법으로는 크게 세가지가 있다. 전위 순회(Preorder traverse) 먼저 노드를 방문하고, 왼쪽 서브트리를 전위순회하고, 오른쪽 서브트리를 전위순회 하는것을 말한다. 트리구조에서 방문하는 순서는 아래와 같다. 더보기 /* 최소한의 기능만 구현되어 있습니다. 자식 노드가 없는 경우는 node == null이라고 가정합니다. 이미 이진 트리는 구현되어 있다고 가정합니다. */ class Node { String data; Node left; Node right; public Node getLeft() { return left; } public Stri.. 2023. 3. 20. 24일차: 자료구조(Graph, Tree, BST) ❯ Graph 여러 점들이 서로 복잡하게 연결된 관계를 나타내는 자료구조. 흔히 그래프라고 생각하면 수학에서 접했던 이차함수그래프, 정규분포그래프 등을 생각하기 쉽다. 하지만 컴퓨터 공학에서 이야기하는 자료구조로서의 Graph는 여러개의 점이 선으로 이어진 네트워크망 구조를 가진다. 그래프의 구조 점간의 직접적인 관계가 있으면 두 점 사이를 이어주는 선이 있다. 간접적인 관계라면 몇개의 점과 선을 통해 이어진다. 이 때 하나의 점을 정점(Vertex), 이를 잇는 선은 간선(edge)이라고 한다. 그래프의 표현방식 두 정점을 잇는 간선이 있다면 이 두 정점은 인접한 것이다. 이를 표현하는 방법으로는 인접행렬을 이용하는 방법과 인접리스트를 사용하는 방법이 있다. 1) 인접행렬 : 두 정점간의 관계가 있는.. 2023. 3. 17. 23일차: 자료구조 (Stack, Queue) ❯ 자료구조 프로그래밍을 하다보면 다양한 데이터를 사용하게 된다. 데이터의 특징에 따라 체계적으로 정리하고 관리해야 데이터를 효율적으로 사용할 수 있다. 이렇게 데이터 묶음을 저장하고 사용하는 방법을 정의한 것을 자료구조라고 한다. 위의 다양한 자료구조 중 자주 사용하는 자료구조는 Stack, Queue, Tree, Graph로 이 네가지에 대해 학습한다. 자료구조의 특성과 기능에 대해 알면 어떤 상황에서 어떠한 자료구조를 사용할수 있을지 알 수 있다. 특히, 학습을 위해 직접 해당 자료 구조를 사용자정의 클래스를 작성해보면서 기능을 익힐 예정이다. ❯ Stack Stack 의 사전적 의미인 "쌓다. 쌓이다."처럼 데이터를 순서대로 쌓는 구조를 의미한다. 가장 나중에 들어간 데이터가 가장 먼저 나온다.(.. 2023. 3. 16. 22일차: JSON, 재귀함수 실습 ❯ JSON JSON(JavaScript Object Notation). 데이터 교환을 위해 만들어진 객체 형태의 포맷. 네트워크를 통해 어떤 객체를 다른 프로그램에게 전송한다고 가정해보자. 수신자와 발신자가 다른 프로그램을 사용할 경우 데이터가 제대로 전달되지 않을 수 있다. 따라서, 데이터가 정상적으로 전달되기 위해서는 (1) 수신자와 발신자가 같은 프로그램을 사용하거나 (2) 문자열처럼 범용적으로 읽을 수 있는 형태로 전달되어야한다. 이를 위해 사용하는 것이 JSON 형태를 사용하는 것이다. JSON 구조 1. JSON 객체는 데이터 이름과 값의 쌍으로 이루어진다. "데이터이름" : 값 의 형태로 표시하며, 데이터 이름은 문자열이므로 항상 큰따옴표("") 와 함께 사용한다. 데이터 값으로는 숫자, .. 2023. 3. 15. 21일차: 재귀(Recursion) 재귀(再歸)는 사전적으로 "원래의 자리로 되돌아가거나 되돌아옴"의 의미를 가진다. 따라서 재귀함수는 말그대로 자기 안에서 자기 자신을 호출하는 함수를 의미하게 된다. class Example{ public int factorial(int num){ if(num 연습을 통해서 익숙해지도록 하자! 재귀함수가 성립하기 위해서는 구현하고자하는 내용을 작은단위로 쪼갤 수 있어야한다. 또한 재귀 호출이 종료되는 조건(시점)이 있어야한다. 위의 사례를 예로 들면, factorial 의 경우 1부터 1씩 증가시키면서 정해진 값까지 곱하는 형태를 가진다. factorial 5 = 1 * 2 * 3 * 4 * 5 (1 * 2 * 3 * 4) * 5 // 문제를 작은 단위로 쪼갤 수 있다 (1 * 2 * 3) * 4 (1 .. 2023. 3. 14. 20일차: Section 1 회고 어느새 한달이라는 시간이 지나고 Section 1이 종료되었다. 이번 단위기간은 자바의 기본적인 내용과 활용에 대해 학습하는 시간이었다. 한달간 정신없이 달리다보니 내가 무엇을 알고있는지, 무엇을 아직 이해하지 못했는지 점검할 시간조차 없었다. 아무래도 비전공자이다 보니 내용을 따라가기에 바빴고 매일 저녁 늦게까지, 게다가 주말까지 추가학습을 해야 스스로 만족할만큼 따라갈 수 있었다. (지난 주말 일주일만에 처음으로 집밖으로 나갔는데 계절이 바뀌어있더라...^^) 매일 교육 과정만 다루었던 만큼 오늘은 교재에서 제안하는 KPT 방식을 통해 한달을 돌아보려고 한다. 1. 목표 부트캠프를 시작하면서 내 목표는, 올해 안에 개발자로 커리어 전환을 하는것이었다. 예전에 이직을 하면서 커리어를 전환한적이 있는데,.. 2023. 3. 13. 이전 1 ··· 25 26 27 28 29 30 31 32 다음