Daniel: The Dev Story
Daniel: The Dev Story
    • 홈
  • 분류 전체보기
    • 프로젝트
    • Spring
    • NodeJS
    • Basics
    • Git
    • DB
    • Algorithm
    • Error
    • Private
      • Database
      • Tip
  • 글쓰기
  • 관리자
  • myoskin

      [Spring] 의존성 주입과 의존성 역전 원칙(DI ans DIP)

      목  차의존하다의존성 역전 원칙(Dependency Inversion Principle, DIP)DIP와 의존성 주입(DI)DIP를 위배한 코드와 변경 후 코드문제점     의존하다 '의존성을 주입한다', '의존한다' 라는 말들은 초보 개발자들에게 굉장히 어렵게 다가올 수 있다.  간단한 예시를 통해서 이 어려운 언어들을 쉽게 바꾸어 보려고 한다. 당신은 커피를 만들기 위해서 커피머신을 사용한다고 한다. 이 때 당신은 커피머신에 '의존'하고 있는 것이다. 프로그래밍에서도 비슷한 개념이 적용된다. 한 클래스가 다른 클래스의 코드를 필요로 할 때, 우리는 그 클래스가 다른 클래스에 '의존한다' 라고 말한다.      의존성 역전 원칙(Dependency Inversion Principle, DIP) 여기서 ..

      Spring 2024.02.20

      [자료구조] Map 과 배열을 이용한 트리 구현

      목 차 트리의 정의와 주요 특성 배열을 사용한 트리 구현 Map을 사용한 트리 구현 트리의 정의와 주요 특성 노드는 부모가 있고, 자식이 왼쪽과 오른쪽에 있다. 노드의 구성은 아래 이미지를 참고하면 된다. 이런 노드들이 모여서 트리가 되는 것인데, 부모를 타고 계속 올라가서 더 이상 부모가 없는 노드를 루트노드 라고 한다. 자식을 타고 계속 내려가서 더이상 자식이 없는 노드를 리프노드 라고 한다. 그리고 루트노드의 인덱스가 i 일 때, 왼쪽 자식의 노드는 i * 2, 오른쪽 자식의 노드는 i * 2 + 1 이다. 반대로 부모 노드는 Math.floor(i / 2) 이다. Math.floor 메서드는 내림을 해주는 메서드이다. 즉, 9.8을 9로 만들어 준다. 배열을 사용한 트리 구현 배열을 사용하여 트리..

      Algorithm 2024.02.16

      [백준] 2109: 순회강연 - Java (우선순위 큐)

      목 차문제접근 방식풀이 문제 접근 방식 이 문제의 알고리즘 분류는 그리디 알고리즘, 정렬, 우선순위 큐이다. 이 문제를 정렬과 우선순위 큐로 구현을 해보려고 한다. 먼저 강의들의 date 값을 기준으로 small -> Large 순(오름차순)으로 정렬을 한다. 이제 하나씩 큐에 넣는다. 넣을 때 우리가 해줘야 하는 것들은 다음과 같다. 1. 요소의 pay 값을 큐에 넣는다. 2. 만약 큐의 size 가 해당 요소의 date 값을 초과한다면 가장 작은 값을 pop 한다. 이렇게만 보면 상당히 간단한데, 이렇게 구현하면 문제를 풀 수 있다. 사실 여기까지 생각하는 게 힘들 뿐이다. 2109번 문제의 기본 예제를 예를들어 설명해 보려고 한다. 왼쪽이 원본 배열이고, 오른쪽이 정렬 후의 배열이다. 이제 하나씩 ..

      Algorithm 2024.02.15

      [알고리즘] 플로이드 워셜(Floyd-Warshall)

      목 차플로이드 워셜(Floyd-Warshall)기본 개념과 작동 원리구현하며 배운 것들구현 방법 플로이드 워셜(Floyd-Warshall) 최단 경로를 구하는 알고리즘 중에는 대표적으로 다익스트라 알고리즘이 존재한다. 다익스트라 알고리즘의 경우 한 점에서 다른 한 점으로의 최단경로를 구하는 반면에 플로이드 워셜은 모든 정점 사이의 최단경로를 찾는 데에 사용된다. 시간 복잡도는 O(V^3)이다. 기본 개념 및 작동 원리 기본 개념위에서 언급하였듯이 모든 정점의 최단경로를 찾는 알고리즘이다. 작동 원리기본적으로 동적 프로그래밍을 기반으로 작동을 하지만 복잡하면 굳이 생각하지 않아도 된다. 이 알고리즘에서는. 이 알고리즘에서는 각 점을 순회하는데, 시작점으로써가 아닌 '경유점'의 개념으로 접근을 하게 된다. ..

      Algorithm 2024.02.06

    1
    Daniel: The Dev Story

    찾기

    공지

    최근 글

    인기글

    최근 댓글

    캘린더

      2 / 2024
      일 월 화 수 목 금 토
      1 2 3
      4 5 6 7 8 9 10
      11 12 13 14 15 16 17
      18 19 20 21 22 23 24
      25 26 27 28 29

    글 보관함

    태그

      코딩타입스크립트MYSQLjavaBOJ백준Algorithm알고리즘git자바

    즐겨찾기

    방문자 수

    • Today
    • Yesterday
    • Total
    myoskin

    티스토리툴바