전체 글

포트폴리오
Algorithm

[Conc & Sol] `for문` vs `향상된 for문` (cf. Iterator, ListIterator) & 역순 정렬 없이 큰 숫자 만들기

▼ Why ? What ? 1일 1알고리즘 스터디에서 "숫자 짝꿍"이라는 문제를 풀다가 for문을 사용하여 `List`를 순회했을 경우에 요구되는 시간복잡도와 향상된 for문을 사용하여 `List`를 순회했을 경우에 요구되는 시간복잡도가 차이가 있다는 사실을 처음 알게되어 정리해두게 되었다.▼ `for문` vs `향상된 for문` (cf. Iterator를 사용한 접근) `for문`을 사용해 컬렉션(or 배열)을 순회하는 경우 n번째 요소에 접근할 때, n-1번째 요소에서 접근하는 것이 아니라 !내부적으로 1번째 요소에서부터 순차적으로 n번을 반복해 접근하는 과정을 거친다 !➙ 시간 복잡도 : O(n^2)while문과 같은 기본적인 반복문도 마찬가지이다.List list = new ArrayList();..

Language/Java

[Java] Collection Framework, `Comparable` 인터페이스vs `Comparator` 인터페이스 (cf. 람다함수, 익명객체)

▼ Why ? What ?1일 1알고리즘 스터디에서 "스테이지 별 실패율"을 구해서 "실패율"을 기준으로 "스테이지 번호"를 "내림차순으로 정렬"하는 문제를 풀다가, Collection Framework의 구조, 익명객체와 람다함수의 사용, 그리고 `Comparator` 인터페이스와  `Comparable` 인터페이스의 차이점을 다시 헷갈려하는 것 같아서 따로 공부하며 정리해보았다.▼ Collection Framework Hierarchy of Colleciton Framework  Collection 인터페이스, Collections 클래스 ? `Collection` 인터페이스를 상속받는 인터페이스 : `List`, `Map`, `Set`, ...`Collections` 클래스 : 컬렉션들을 다루기 위..

Algorithm

[Conc & Sol] Integer.valueOf() vs Integer.parseInt()

▼ What ? Why? 1일 1알고리즘 스터디에서 이번에 해결한 "다트 게임"이라는 문제를 풀어봤는데, 문자열에서 특정 문자들을 추출하고, 추출한 문자에 따라 로직("점수", "보너스", "옵션")을 처리해 "다트 게임"에서 얻은 총점수를 구하는 문제였다. 문제를 해결하는 과정에서 `문자열(String)`을 `정수값(int)`로 변환해야 하는 경우가 있었는데, 문득 `Integer.valueOf()`와 `Integer.parseInt()' 사이에 어떤 차이가 있는지 궁금해져서 찾아보게 됐다.  사실 두 메서드는 별다른 구분없이 정수형으로 변환해주는 메서드라고 생각하며 사용해왔다가, 이번에 두 메서드의 차이점이 은근 크다는 사실을 알게 되었다. 그래서 두 메서드의 차이점을 기억해둔다면, 나중에 개발을 할..

Algorithm

[Conc & Sol] `Arrays.sort()`, `Collections.sort()`, `Comparator`를 이용한 정렬 (cf. 객체 배열, 익명객체, 람다함수), 클래스를 활용해서 기존 인덱스값 기억하기

▼ Why ? What ? 1일 1알고리즘 스터디에서 "스테이지 별 실패율"을 구해서 "실패율"을 기준으로 "스테이지 번호"를 "내림차순으로 정렬"하는 문제를 풀어봤다. 이 과정에서 '클래스'를 이용해서 기존 인덱스 값을 활용하고, `Comparator` 인터페이스의 `compare()` 메서드를 오버라이딩해서 정렬 기준을 생성해주는 방식은 기억해두는 것이 좋을 것 같아서 정리해두려고 한다.▼ `Arrays.sort()` & `Comparator` ( cf. `Collections.sort()` ) Arrays.sort() `배열`을 정렬해야 할 때 사용하면 된다 ! 기본형 배열 정렬 : 기본 데이터 타입(int, long, double 등)의 배열을 오름차순으로 정렬한다.➙ Dual-Pivot Quic..

Algorithm

[Conc & Sol] 소수, 약수를 효율적인 시간 내에 구하는 방법 (cf. 에라토스테네스의 체)

▼ Why ? What ? 1일 1알고리즘 스터디를 진행하다가 소수와 약수를 구해야 하는 문제들을 해결하면서, 내가 해결한 방법보다 훨씬 더 효율적이고 빠르게 소수와 약수를 구할 수 있는 방법을 알게 되었고, 기억해두면 나중에 유용하게 사용할 일이 있을 것 같아서 이렇게 정리해두게 되었다.▼ 에라토스테네스의 체 알고리즘 에라토스테네스의 체 ?고대 그리스의 수학자 에라토스테네스가 만들어낸 "소수(Prime Number)를 찾는 방법"이라고 한다.➙ 특정 정수 이하의 모든 소수를 찾기 위해서 소수를 찾는 것이 아니라 소수의 반대인 합성수(Composite Number)를 제거하는 원리 ! 에라토스테네스의 체 알고리즘를 이용한 "소수" 찾기자연수 `n`이 주어졌을 때, `2`부터 `n`까지의 모든 수가 소수가..

Back-end/Study <자바의 정석>

[Tools] Java 스터디 <자바의 정석> : 자바를 시작하기 전에

▼ Why ? 이번에 복학하면서 백엔드에 관심이 생겼고 Spring이라는 프레임워크를 다루기 전에 Java에 대한 개념을 잡고자 동아리에서 진행하는 자바 스터디에 참여하게 되었다. 스터디의 목표는 Spring을 다루기 위한 기반을 잡기 위해, 강의나 책을 하나 골라 그것을 메인으로 정하고 이번 여름 방학까지 학습을 끝내는 것이다. "자바의 정석"이라는 책을 고르된 이유는 이 책은 굳이 몰라도 되는 부분까지 설명되어 있다고는 하지만, 이왕 자바 스터디까지 진행하는거, 다소 심화적인 내용까지 다뤄보는 것도 괜찮을 것 같아 이 책으로 선정하게 되었다. 스터디는 매주 학습 범위를 정하고 각자 블로그에 학습한 내용을 정리한 뒤, 자신이 맡은 파트를 스터디 시간에 설명해주며 복습하는 방식으로 진행해보려고 하고 공부..

Uykm
Uykm_Note