슬로's Dev Log

Written by@슬로
느리지만 꾸준하게 나아갑니다.

2022.03.07

아이템4. 인스턴스화를 막으려거든 private 생성자를 사용하라

정적 필드와 정적 메서드를 모아놓고 사용하는 것이 유용할 때가 있다. 예를 들어 java.lang.Math와 java.util.Arrays 클래스처럼 기본 타입 값이나 배열 관련 메서드를 모아 놓을 수 있다. 또한, java.util.Collections처럼 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드를 모아놓을 수 있다. 그리고 문자열을 조…

2022.03.05

백준16925-문자열 추측

문제 문자열 추측 접근 방법 길이가 1인 경우부터 N-1 이하인 경우까지 모든 접두사와 접미사가 주어진다. 따라서 을 조합해서 N 길이의 문자열을 만들 수 있다. 그리고 만들어진 N 길이의 문자열 중 원래 문자열 S를 찾으면 된다. 같은 길이의 문자열은 접미사, 접두사인 경우로 2개씩 존재한다. 그리고 접미사인지 접두사인지 모르기 때문에 앞뒤의 경우를 …

2022.02.21

정적 팩토리 메서드를 사용하는 이유

정적 팩토리 메서드(Static Factory method)란? 정적 팩토리 메서드란 을 말한다. “객체 생성은 생성자가 하는데, 왜 정적 팩토리 메서드를 따로 만들어서 객체 생성을 할까?” 1. 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 반면, 정적 팩토리 메서드를 사용하면 메서드…

2022.02.17

불변객체를 만드는 방법

불변 객체(Immutable Object)란? 를 말한다. 원시 타입(primitive type)에서의 불변 원시 타입은 참조 값이 없기 때문에 값을 외부로 내보내는 경우에도 내부 객체는 불변이다. 따라서 내부 값을 바꿀 수 없도록 setter를 생성하지 않는 것만으로 원시 타입으로 이루어진 객체는 불변으로 만들 수 있다. 참조 타입(reference t…

2022.02.16

아이템6. 불필요한 객체 생성을 피하라

객채 생성이 빈번하고, 그 비용이 크다면? 문자열 객체 생성 String을 new로 생성하면 항상 새로운 객체를 만들게 된다. 그렇기 때문에 같은 문자열을 새로 new로 생성하는 것은 비효율적이다. 따라서 아래와 같이 문자열을 생성해야한다. 왜 이렇게 이런 방법으로 문자열을 생성하는 것이 좋을까? 문자열 리터털로 생성할 경우, 영역에 할당된다. 그리고…

2022.01.30

백준19951_태상이의 훈련소 생활

문제 태상이의 훈련소 생활 접근 방법 연병장의 크기(N)과 조교의 수(M)가 각각 최대 10만 이므로 모든 조교의 지시에 해당하는 모든 연병장의 높이를 변경하기 위해서는 O(N*M)의 시간 복잡도가 요구되고, 해당 방법으로 진행하면 시간 초과가 발생할 것이다. 따라서 연병장 크기 변경을 선형으로 한 번에 처리해야 한다. 누적 합을 이용하면 문제를 해결할 …

2022.01.28

프로그래머스_수식 최대화

문제 괄호 변환 3가지 연산자(+, -, *)로 이루어져있다. 각 연산자는 우선순위를 정할 수 있다. 우선순위에 맞게 수식을 계산하여 최대값을 구한다. 계산값은 절대값으로 계산한다. 접근 방법 먼저 입력받은 문자열을 split 해서 숫자와 연산자를 구분해야한다. List 자료구조를 통해서 숫자, 연산자를 담았다. 그리고 숫자는 연산 할 때 int 범위를 …

2022.01.27

프로그래머스_괄호 변환

문제 괄호 변환 ’(’ 와 ’)’ 로만 이루어진 문자열이 있을 경우, ’(’ 의 개수와 ’)’ 의 개수가 같다면 이를 그리고 여기에 ’(‘와 ’)‘의 괄호의 짝도 모두 맞을 경우에는 이를 올바른 접근 방법 먼저 u, v로 나눌 인덱스 위치를 구해야한다. u는 이고, 더 이상 분리할 수 없어야 하기 때문에 가 되는 인덱스를 찾으면 된다. 일 때는 …

2022.01.21

Servlet은 어떻게 등장하게 되었을까

1. Servlet은 어떻게 등장하게 되었을까? 일반적으로 웹 서버는 정적인 페이지만을 제공한다. 그렇기 때문에 상품 검색, 댓글 작성과 같은 사용자의 요청을 완료한 동적인 페이지를 제공하기 위해서는 동적인 처리를 담당할 무언가가 필요했고, 이러한 역할을 담당하는 가 등장하게 되었다. CGI(Common Gateway Interface) CGI는 웹 서버…

2022.01.11

List, Set 어떤 것을 쓰는 것이 유리한가

배경 알고리즘 문제(여기에 정리)를 풀다가 LinkedList 와 HashSet 의 contains() 속도 차이가 크다는 것을 알게 되었다. 직접 테스트 해보고 이를 정리하려고 한다. 속도 비교 10000000의 숫자를 ArrayList, LinkedList, HashSet에 각각 저장했고, 특정 위치에 저장할 때 걸리는 시간과 5000000 값이 존…