일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java
- 플로이드 와샬
- 유니온 파인드
- scikit-learn
- clean code
- Python
- 코딩테스트
- Django
- kmeans
- 우선순위큐
- compiler
- onclick
- Android Studio
- 동적계획법
- top-down
- 다익스트라
- spring boot
- bottom-up
- 음수가 포함된 최단경로
- 최단경로
- dto
- 벨만 포드 알고리즘
- Controller
- union-find
- 엔테크서비스
- 직무면접
- disjoint set
- 거쳐가는 정점
- BufferedReader
- 기술면접
- Today
- Total
목록Developer's_til/그외 개발 공부 (20)
춤추는 개발자
class Solution { public int solution(int n) { int answer = 0; return answer; } } 프로그래머스를 자주 이용하는 분들이라면 위 코드가 무엇인지 알 것이다. 알고리즘 문제에 들어가서 언어를 Java로 선택하면 나오는 기본 템플릿이다. 평소에는 solution함수에 로직을 작성하고 모듈별로 메소드를 만들어서 풀이했는데, 이제는 좀 더 Java스럽게 문제를 풀고 있다. class Solution { public static int solution(int n) { int answer = 0; return answer; } public static void main(String[] args) { int n = 0; solution(n); } } 무슨 차..
대표적인 둘의 차이로 컴파일러는 전체 소스코드를 한 번에 번역하고 인터프리터는 소스코드의 각 행을 연속적으로 번역하여 실행한다. 이 정도는 쉽게 기억할 수 있는 둘의 차이지만 좀 더 깊게 살펴보고 이해하겠다. 컴파일러의 특성 작성된 소스코드를 한번에 번역 한 번 번역을 하면 실행 파일(목적 파일)을 생성해 메모리에 저장 다음 실행 시, 저장된 목적 파일을 실행하기 때문에 실행 시간 단축. 인터프리터의 특성 고레벨 언어를 중간 코드(Intermediate Code)로 변환해 이를 각 행마다 실행. 일반적으로 컴파일러에 비해 실행시간이 느림. 하지만, 각 행을 실행하는 도중 에러 발생 시, 이후 작성된 코드를 살펴보지 않음 보안적인 관점에서 도움이 됨. 자바를 통해 컴파일러와 인터프리터의 차이를 다시 알아보..
이전 포스팅에서는 머신러닝의 비지도학습 중 대표적인 Clustering을 다뤄봤습니다. 이번에는 머신러닝의 지도학습에 해당하는 KNN 알고리즘에 대해 알아보겠습니다. KNN 알고리즘은 최근접 이웃 알고리즘이라고도 합니다. 새로운 데이터를 입력받았을 때, 이 데이터와 가장 근접한 데이터들의 종류가 무엇인지 확인하고 해당 그룹으로 분류하는 알고리즘입니다. KNN은 아래처럼 3단계에 걸쳐 진행됩니다. 1. 주변 데이터 간의 거리계산하기 2. 가장 근처에 있는 요소 뽑기 3. 분류되는 군집 예측하기 위 그림은 KNN알고리즘의 동작 과정으로 신규 데이터(흰색)가 K값에 따라 분류되는 군집을 Prediction으로 확인할 수 있습니다. 다만, K를 너무 작게 설정하면 과적합이 우려되며 너무 크게 설정하면 데이터 구..
클러스터링은 비지도 학습기법으로 유사한 유형의 데이터를 그룹화함으로써 숨겨진 구조를 파악합니다. 클러스터링을 활용하면 추천 엔진, 검색 엔진, 시장 세분화 등을 구현할 수 있습니다. K-means Clustering이란? "K"는 주어진 데이터를 그룹화할 수 즉, 클러스터 개수를 말합니다. "Means"는 각 클러스터의 중심과 데이터들의 평균 거리를 의미합니다. 이 때, 클러스터의 중심을 centroids라고 합니다. K-means 알고리즘은 다음과 같은 과정을 수행합니다. 1. 데이터셋에서 K개의 centroids를 임의로 지정. 2. 각 데이터들을 가장 가까운 centroids와 같은 그룹으로 할당. 3. 2번 과정에서 할당된 결과로 centroids를 다시 지정. 4. 2~3번 과정을 반복하면서 c..
Scanner와 BufferedReader의 가장 큰 차이점은 속도입니다. 숫자 100만개를 입력받는데 걸리는 속도는 Scanner는 약 2.5ms / BufferedReader는 약 0.4ms 나머지 차이점은 다음과 같다. 버퍼크기 : Scanner(1024 chars), BufferedReader(8192 chars) 문자열 : Scanner는 문자열을 구분하여 분석, BufferedReader는 문자열을 단순히 읽고 저장 동기화 : Scanner은 동기화x, BufferedReader는 동기화가 가능 BufferedReader는 InputStreamReader에 버퍼링 기능이 추가된 class입니다. 일정한 크기의 데이터를 한 번에 읽어와 버퍼에 보관, 사용자의 요청이 있을 때 버퍼에서 데이터를 읽..
1. String 과 StringBuilder, StringBuffer String과 StringBuilder, StringBuffer의 차이는 동일 객체 내에서 변경이 가능한지의 여부입니다. 먼저, String은 불변의 속성을 갖습니다. String str = "hello"; str += " world"; str에 world를 추가할 경우, str은 "hello world"라는 새로운 메모리 영역을 가리키게 됩니다. 이때, "hello"는 Garbage로 남아 GC에 의해 사라지게 됩니다. 만약, 문자열의 수정이 빈번할 경우 힙 영역에 임시 Garbage가 쌓여서 메모리 부족이 발생할 수 있습니다. StringBuilder sb = new StringBuilder(); sb.append("a"); sb..