일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 인접행렬
- 변수
- REST API
- javascript
- 코딩테스트
- GraphQL
- nestjs
- Deep Dive
- 탐욕법
- java
- 자료구조
- queue
- 인접리스트
- OOP
- node.js
- dfs
- TIL
- css
- logger
- bean
- LifeCycle
- JWT
- 알고리즘
- MySQL
- winston
- 프로그래머스
- Interceptor
- typescript
- Spring
- html
- Today
- Total
목록전체 글 (227)
처음부터 차근차근
오늘 한 일 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 {..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/etpYLK/btsC0Z3mdec/UFP4KXRyPcXm1X5LICjXxk/img.png)
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12951 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/NBfol/btsCSC9qrAt/DmybjEfSvwK7HWedLKDitk/img.png)
문제 링크 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 이하인 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/oa2Xj/btsCTzknmr5/It0KylqYNzZOJWOnYrOgK0/img.png)
자료구조 Heap 완전 이진 트리의 일종으로, 우선순위 큐를 위하여 만들어진 자료구조입니다. 최댓값, 최솟값을 쉽게 추출할 수 있는 자료구조입니다. 자세한 내용은 해당 Post를 참조해주세요. [자료구조] Heap Heap Heap tree or Heap이라고 불린다. 여러 개의 값 중에서 가장 크거나 작은 값을 빠르게 찾기 위해 만든 완전 이진트리를 말한다. 우선순위 Queue를 위하여 만들어진 자료구조이다. 힙은 일종의 반 정 hangju95.tistory.com Heapsort 최대 힙 트리나 최소 힙 트리를 구성해 정렬을 하는 방법 내림차순 정렬을 위해서는 최대 힙을 구성하고 오름차순 정렬을 위해서는 최소 힙을 구성하면 된다. 과정 설명 정렬해야 할 n개의 요소들로 최대 힙(완전 이진 트리 형태)..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bxU56C/btsCVJfEKmi/oO7EnFbJMtm6p8dohgVJxk/img.png)
MergeSort 일반적인 방법으로 구현했을 때 이 정렬은 안정 정렬 에 속하며, 분할 정복 알고리즘의 하나 이다. 분할 정복(divide and conquer) 방법 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략이다. 분할 정복 방법은 대개 순환 호출을 이용하여 구현한다. 과정 설명 리스트의 길이가 0 또는 1이면 이미 정렬된 것으로 본다. 그렇지 않은 경우에는 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다. 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. 하나의 리스트를 두 개의 균등한 크기로 분할하고 분할된 부분 리스트를 정렬한 다음, 두 개의 정렬..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ccf3fk/btsCTuwFylI/CrZvZj1DB0rI4rl1ZVKC2K/img.gif)
QuickSort 퀵 정렬은 불안정 정렬에 속하며, 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬에 속합니다. 분할 정복 알고리즘의 하나로, 평균적으로 매우 빠른 수행 속도를 자랑하는 정렬 방법입니다. 합병 정렬(merge sort)과 달리 퀵 정렬은 list를 비균등하게 분할합니다. 분할 정복(divide and conquer) 방법 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략입니다. 분할 정복 방법은 대개 순환 호출을 이용하여 구현합니다. 하나의 리스트를 피벗(pivot)을 기준으로 두 개의 비균등한 크기로 분할하고 분할된 부분 리스트를 정렬한 다음, 두 개의 정렬된 부분 리스트를 합하여 전체가 정렬된 리스트가 되게 하는 방법이다. 퀵 정렬..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0qdwo/btsC0Zvkyfy/1Fre1z1IGsP2c7Sv5Yg6A1/img.png)
Interface란? interface는 일종의 추상클래스입니다. 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않습니다. 추상클래스를 '미완성 설계도'라고 한다면, 인터페이스는 밑그림만 그려져 있는 '기본 설계도'라고 할 수 있습니다. interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수 목록); } 순스 추상 클래스의 특징을 모두 가집니다. 인스턴스 생성 불가 상속 시 모든 메서드를 오버라이딩 해야 한다. 주로 다형성을 위해 사용된다. 인터페이스에도 클래스처럼 접근제어자로 public 또는 default만 사용할 수 있다. 모든 메서드는 public abstract이어야 하며..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/oSZZN/btsCTwHWpSd/X9CjV89Ubz5tAZQd6D9Pw1/img.png)
추상이란?? 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용. 즉, 추상화란 '형상을 뽑아내어 변화시키는 것'이라고 정의할 수 있습니다. 고양이, 강아지, 소에서 추상을 하면 동물, 포유류 등을 추상화 할 수 있습니다. 쉽게 말하자면 '일반화' 같은 것입니다. 추상 클래스 클래스를 설계도에 비유한다면, 추상 클래스는 미완성 설계도라고 비유할 수 있습니다. 추상 클래스는 이름 그대로 추상적인 개념을 제공하는 클래스입니다. 따라서 실체인 인스턴스가 존재하지 않습니다. 대신에, 상속을 목적으로 사용되고 부모 클래스 역할을 맡는 중요한 의미를 갖습니다. abstract class AbstractAnimal {...} 추상 클래스는 클래스를 선언할 때 앞에 추상이라는 의미의 ab..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bJR8kH/btsCWMCQZDZ/KBDUfHxeMkktv6AmkKiTZk/img.png)
객체 지향 프로그래밍의 대표적인 특징으로는 캡슐화, 상속, 다형성이 존재합니다. 좋은 개발자가 되기 위해서는 다형성에 대한 이해가 필수입니다. 다형성(Polymorphism)이란? "다양한 형태", "여러 형태", 즉, 여러 가지 형태를 가질 수 있는 능력을 의미 프로그래밍에서 다형성은 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 뜻합니다. 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현했습니다. 다형성을 이해하기 위해서는 크게 2가지 핵심 이론을 알아야 합니다. 다형적 참조 메서드 오버라이딩 다형적 참조 다형적 참조를 이해하기 위해 간단한 상속 관계 코드를 만들어보겠습니다. package poly.basic; public class P..