일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- css
- nestjs
- LifeCycle
- 자료구조
- Spring
- typescript
- html
- REST API
- GraphQL
- Interceptor
- MySQL
- TIL
- node.js
- javascript
- winston
- 알고리즘
- Deep Dive
- puppeteer
- Kubernetes
- JWT
- Linux
- 탐욕법
- OOP
- 인접리스트
- 코딩테스트
- java
- 프로그래머스
- dfs
- 인접행렬
- bean
- Today
- Total
목록전체 글 (241)
처음부터 차근차근
QuickSort 퀵 정렬은 불안정 정렬에 속하며, 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬에 속합니다. 분할 정복 알고리즘의 하나로, 평균적으로 매우 빠른 수행 속도를 자랑하는 정렬 방법입니다. 합병 정렬(merge sort)과 달리 퀵 정렬은 list를 비균등하게 분할합니다. 분할 정복(divide and conquer) 방법 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략입니다. 분할 정복 방법은 대개 순환 호출을 이용하여 구현합니다. 하나의 리스트를 피벗(pivot)을 기준으로 두 개의 비균등한 크기로 분할하고 분할된 부분 리스트를 정렬한 다음, 두 개의 정렬된 부분 리스트를 합하여 전체가 정렬된 리스트가 되게 하는 방법이다. 퀵 정렬..
Interface란? interface는 일종의 추상클래스입니다. 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않습니다. 추상클래스를 '미완성 설계도'라고 한다면, 인터페이스는 밑그림만 그려져 있는 '기본 설계도'라고 할 수 있습니다. interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수 목록); } 순스 추상 클래스의 특징을 모두 가집니다. 인스턴스 생성 불가 상속 시 모든 메서드를 오버라이딩 해야 한다. 주로 다형성을 위해 사용된다. 인터페이스에도 클래스처럼 접근제어자로 public 또는 default만 사용할 수 있다. 모든 메서드는 public abstract이어야 하며..
추상이란?? 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용. 즉, 추상화란 '형상을 뽑아내어 변화시키는 것'이라고 정의할 수 있습니다. 고양이, 강아지, 소에서 추상을 하면 동물, 포유류 등을 추상화 할 수 있습니다. 쉽게 말하자면 '일반화' 같은 것입니다. 추상 클래스 클래스를 설계도에 비유한다면, 추상 클래스는 미완성 설계도라고 비유할 수 있습니다. 추상 클래스는 이름 그대로 추상적인 개념을 제공하는 클래스입니다. 따라서 실체인 인스턴스가 존재하지 않습니다. 대신에, 상속을 목적으로 사용되고 부모 클래스 역할을 맡는 중요한 의미를 갖습니다. abstract class AbstractAnimal {...} 추상 클래스는 클래스를 선언할 때 앞에 추상이라는 의미의 ab..
객체 지향 프로그래밍의 대표적인 특징으로는 캡슐화, 상속, 다형성이 존재합니다. 좋은 개발자가 되기 위해서는 다형성에 대한 이해가 필수입니다. 다형성(Polymorphism)이란? "다양한 형태", "여러 형태", 즉, 여러 가지 형태를 가질 수 있는 능력을 의미 프로그래밍에서 다형성은 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 뜻합니다. 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현했습니다. 다형성을 이해하기 위해서는 크게 2가지 핵심 이론을 알아야 합니다. 다형적 참조 메서드 오버라이딩 다형적 참조 다형적 참조를 이해하기 위해 간단한 상속 관계 코드를 만들어보겠습니다. package poly.basic; public class P..
Final이란? Final 키워드는 말 그대로 '마지막의' 또는 '변경될 수 없는' 의미를 가지고 있으며, 이름 그대로 끝이라는 뜻입니다. 거의 모든 대상에 사용될 수 있습니다. Final이 사용될 수 있는 대상 Class 변경할 수 없는 클래스, 즉, 확장될 수 없는 클래스를 의미합니다. 즉, 다른 클래스의 조상이 될 수 없습니다. Method 변경될 수 없는 메서드를 의미하며, Overriding을 통해 재정의 될 수 없습니다. 멤버 변수, 지역 변수 변수 앖에 final이 붙으면, 값을 변경할 수 없는 상수가 됩니다. 재할당을 할 경우, 컴파일 오류가 발생합니다. Final 사용해보기 지역변수 package final1; public class FinalLocalMain { public static..
Static이란? 정적(static)은 고정된이란 의미를 가지고 있습니다. Static이라는 키워드를 사용하여 Static변수와 Static메소드를 만들 수 있는데 다른말로 정적필드와 정적 메소드라고도 하며 이 둘을 합쳐 정적 멤버라고 합니다.(클래스 멤버라고도 합니다.) 정적 필드와 정적 메소드는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버입니다. 그렇기에 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할때 클래스별로 관리됩니다. 따라서 클래스의 로딩이 끝나는 즉시 바로 사용할 수 있습니다. Static 멤버 생성 Static 키워드를 통해 생성된 정적멤버들은 Heap영역이 아닌 Static영역에 할당됩니다. Static 영역에 할당된 메모리는 모든 객체가 공유하여 하나의 멤..
Java의 메모리 구조 메서드 영역(Method Area) : 메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리합니다. 이 영역은 프로그램의 모든 영역에서 공유합니다. 클래스 정보 : 클래스의 실행 코드(Byte Code), Field, Method와 생성자 코드 등 모든 실행코드가 존재합니다. static 영역: Static 변수들을 보관합니다. Runtime 상수 풀 : 프로그램을 실행하는데 필요한 공통 리터럴 상수를 보관합니다. 예를 들어 "hello"라는 리터럴 문자가 있으면 이런 문자를 공통으로 묶어서 관리합니다. 이 외에도 프로그램을 효율적으로 관리하기 위한 상수들을 관리합니다. 스택 영역(Stack Area) : 자바 실행 시, 하나의 실행 스택이 생성됩니다. 각 스택 프레임은 ..
오늘 한 일 Java 강의 진행 버블 정렬, 삽입 정렬, 선택 정렬 공부 코딩테스트 문제 풀이 진행 Java 강의 진행 영한좌.. 그는 빛인가.. Java에 대해서 공부하지만, OOP까지 같이 공부하는 좋은 강의입니다. 김영한의 실전 자바 강의를 들으면서, "아 내가 백엔드 서버를 만들 때, 프레임워크 틀만 맞춰서 구현했구나.."라고 느꼈습니다. OOP를 사용하고 있는데, 어떻게 해야 효율적으로 작성할 수 있는지.. 강의를 통해 조금씩 알아갈 수 있었습니다. (간단한 예시로, Method를 분류해서 확장성 있게 설계하고, 접근 제어자 등을 사용해서 캡슐화를 한다던가..) 정렬 관련 공부 진행 간단한 정렬 방법에 대해서 공부하였습니다. 그러나 실제로 이 방법들은 잘 사용되지 않는다는 단점..! 왜 정..
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42746 문제 설명 문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,..
문제 링크 https://leetcode.com/problems/intersection-of-two-arrays/ 문제 설명 Given two integer arrays nums1 and nums2, return an array of their intersection. Each element in the result must be unique and you may return the result in any order. Example 1: Input: nums1 = [1,2,2,1], nums2 = [2,2] Output: [2] Example 2: Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4] Output: [9,4] Explanation: [4,9] is also ac..