일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 |
- 알고리즘
- 자료구조
- Deep Dive
- nestjs
- MySQL
- css
- JWT
- Linux
- REST API
- Interceptor
- winston
- TIL
- GraphQL
- LifeCycle
- Kubernetes
- puppeteer
- 탐욕법
- node.js
- 인접리스트
- OOP
- 인접행렬
- 프로그래머스
- bean
- typescript
- html
- 코딩테스트
- java
- javascript
- Spring
- dfs
- Today
- Total
목록분류 전체보기 (241)
처음부터 차근차근

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42860 문제 설명 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 (마지막 위치에서 오른쪽으로 이동하면 첫 번째 문자에 커서) 예를 들어 아래의 방법으로 "JAZ"를 만들 수 있습니다. - 첫 번째 위치에서 조이스틱을 위로 9번 조작하여 J를 완성합니다...

OCP 좋은 객체 지향 설계 원칙 중 하나로 OCP 원칙이 존재합니다. 개방 폐쇄의 원칙이란, 기존의 코드는 변경하지 않으면서, 기능을 추가할 수 있도록 설계가 되어야 한다는 의미입니다. Open for extension: 새로운 기능의 추가나 변경 사항이 생겼을 때, 기존 코드는 확장할 수 있어야 한다. Closed for modification: 기존의 코드는 수정되지 않아야 한다. 즉, 확장(새로운 기능이 추가)에는 열려있고, 변경에는 닫혀 있다는 뜻입니다. 확장에 열려있다 모듈의 확장성을 보장하는 것을 의미한다. 새로운 변경 사항이 발생했을 때 유연하게 코드를 추가함으로써 애플리케이션의 기능을 큰 힘을 들이지 않고 확장할 수 있다. 변경에 닫혀있다 객체를 직접적으로 수정하는건 제한해야 한다는 것을..
코드를 작성할 때 일정한 제약이나 규율이 없이 무한한 자유를 준다면, 의외로 더 작성하기 힘든 때가 존재합니다. 어떻게 하면 보다 효율적이고 효과적으로 작성하기 위해 원칙이나 제약을 고민하거나 작성하는 시간이 더 투자되고, 이로 인하여 Resource가 소모되곤 합니다. 우리는 대부분 백엔드 개발을 한다고 하면 객체 지향으로 프로그래밍 합니다. 하지만 이것이 어떤 원칙에 입각되야 하는지 잘 알아야 조금 더 효율적이고 효과적인 코드를 작성할 수 있습니다. 이번 시간에는 객체 지향 설계의 5원칙을 알아보겠습니다. S.O.L.I.D 객체 지향 설계 5원칙 SOLID원칙이란 객체 지향 설계에서 지켜줘야 할 5개의 소프트웨어 개발 원칙을 의미합니다. SRP(Single Responsibility Principle..

이번 포스팅에서는 객체 지향 프로그래밍의 특징 중 하나인 다형성에 대해 조금 더 깊게 공부해보겠습니다. 객체 지향 프로그래밍에 대한 포스팅을 먼저 보고 오는 것을 추천드립니다. [OOP] 객체 지향 프로그래밍이란? 객체 지향 프로그래밍(OOP)란? 컴퓨터 프로그램을 명령어릐 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것 - wikipedia 프로그램 구현에 필요한 hangju95.tistory.com 다형성?? 다형성(Polymrophism) 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질 즉, 어떤 객체의 속성이나 기능이 그 맥락에 따라 다른 역할을 수행할 수 있는 객체 지향의 특성을 의미합니다. 이를 통해 객체 지향 ..
오늘 한 일 Java 다형성, 추상 클래스, 인터페이스 공부 알고리즘 정렬 공부 진행 코딩테스트 내용 정리 Typescript Class 정리 진행 Java 다형성, 추상 클래스, 인터페이스 자바의 다형성과 abstract, interface에 대해 공부하였습니다. Typescript도 비슷하기 때문에 도움이 많이 되었습니다. 객체 지향적으로 어떻게 코드를 짜는지 도움이 되었습니다. 항상 프로젝트를 진행하다가 implements 나, Class 앞에 붇어있는 abstract, 그리고 static에 대해서 몰라서 뭔지 모르겠다~ 하고 넘겼는데, 이번에는 제대로 공부한 것 같습니다. NestJS, 그리고 다른 외부 라이브러리 또한 Class 형태로 구성되어 있는 경우가 많은데, 상속이나 구현을 많이 사용합..
Typescript Class와 Javascript Class의 차이점 Javascript에는 접근 제어자가 없습니다. But 최신 브라우저와 최신 Node.js(버전 12 이상)에서는 지원합니다. Javascript에는 추상 클래스가 없습니다. Javascript에는 인터페이스가 없습니다. 따라서 다중 구현이 불가능합니다. Typescript에서는 이 부분이 보완되어 조금 더 강력하게 객체 지향 코드를 구현할 수 있게 되었습니다. Class 속성 접근 제어자 public : 클래스 외부에서 접근 가능 (기본 값으로 생략 가능합니다.) private : 해당 클래스 내부에서만 접근 가능합니다. protected : Book 클래스를 포함한 서브(자식) 클래스에서만 접근 가능합니다. class Book {..

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12951 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배..

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/43162 문제 설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한사항 컴퓨터의 개수 n은 1 이상 200 이하인 ..

자료구조 Heap 완전 이진 트리의 일종으로, 우선순위 큐를 위하여 만들어진 자료구조입니다. 최댓값, 최솟값을 쉽게 추출할 수 있는 자료구조입니다. 자세한 내용은 해당 Post를 참조해주세요. [자료구조] Heap Heap Heap tree or Heap이라고 불린다. 여러 개의 값 중에서 가장 크거나 작은 값을 빠르게 찾기 위해 만든 완전 이진트리를 말한다. 우선순위 Queue를 위하여 만들어진 자료구조이다. 힙은 일종의 반 정 hangju95.tistory.com Heapsort 최대 힙 트리나 최소 힙 트리를 구성해 정렬을 하는 방법 내림차순 정렬을 위해서는 최대 힙을 구성하고 오름차순 정렬을 위해서는 최소 힙을 구성하면 된다. 과정 설명 정렬해야 할 n개의 요소들로 최대 힙(완전 이진 트리 형태)..

MergeSort 일반적인 방법으로 구현했을 때 이 정렬은 안정 정렬 에 속하며, 분할 정복 알고리즘의 하나 이다. 분할 정복(divide and conquer) 방법 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략이다. 분할 정복 방법은 대개 순환 호출을 이용하여 구현한다. 과정 설명 리스트의 길이가 0 또는 1이면 이미 정렬된 것으로 본다. 그렇지 않은 경우에는 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다. 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. 하나의 리스트를 두 개의 균등한 크기로 분할하고 분할된 부분 리스트를 정렬한 다음, 두 개의 정렬..