전체 글 215

10828번 스택 - C++

[문제] https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net [풀이] 기본적인 스택 풀이 문제이다. C++ STL 중 하나인 스택의 개념과 사용법을 알아보자. 1. 스택 스택(Stack)은 대표적인 LIFO(Last In First Out) 구조이다. 즉, 제일 마지막에 넣은 데이터가 처음으로 빠져나오는 구조를 말한다. C++ STL 사용법 > 스택 선언 stack 이름으로 스택 선언하기 stack stack; > 스택에 데이터 ..

Array(배열) Linked List(연결 리스트) 정리

본 글은 깃허브에 올라온 자료 구조 정리(https://github.com/Seogeurim/CS-study/blob/main/contents/data-structure/basic.md#array-%EB%B0%B0%EC%97%B4) 글을 보고 정리한 글입니다. 자료 구조(Data Structure)란? 자료에 효율적으로 접근하고 수정할 수 있도록 데이터를 구성하고 저장하는 방법을 의미한다. 선형 자료 구조: 데이터가 일렬로 나열되어 있음.(array, linked list, stack, queue) 비선형 자료 구조: 데이터가 특정한 형태로 있는 것(tree, graph) Array(배열) 동일한 자료형의 데이터를 일렬로 나열한 자료구조 1. 선형 구조 2. 데이터 접근이 용이하다. (인덱스로 접근, R..

카테고리 없음 2022.07.11

4. 인스턴스화를 막으려거든 private 생성자를 사용하라 - 이펙티브 자바

본 글은 조슈아 블로크의 이펙티브 자바 3판을 읽고 정리한 글입니다. 정적 메서드와 정적 필드만을 담은 클래스를 만드는 경우 1. java.lang.Math와 java.util.Arrays처럼 기본 타입 값이나 배열 관련 메서드를 모아놓는 경우 2. java.util.Collections처럼 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드(혹은 팩터리)를 모아 놓을 수 있음. 3. final 클래스와 관련한 메서드를 모아놓을 때도 사용(final 클래스를 상속해서 하위 클래스에 메서드를 넣는 건 불가능) 정적 멤버만 담은 유틸리티 클래스는 인스턴스로 만들어 쓰려고 설계한 것이 아니지만, 생성자를 명시하지 않을시 컴파일러가 자동으로 기본 생성자를 만듦(매개변수를 받지 않는 public 생성자가 만..

카테고리 없음 2022.07.11

3. private 생성자나 열거 타입으로 싱글턴을 보장하라 - 이펙티브 자바

본 글은 조슈아 블로크의 이펙티브 자바 개정 3판을 읽고 정리한 글입니다. 싱글턴(singleton)이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기 어려워질 수 있다. -> 타입을 인터페이스로 정의한 다음, 그 인터페이스를 구현해서 만든 싱글턴이 아니면 싱글턴 인스턴스를 가짜(mock) 객체 구현으로 대체 불가능 하기 때문 싱글턴을 만드는 방식 두 가지 두 방식 모두 생성자는 private으로 감춰두고, 유일한 인스턴스에 접근할 수 있는 수단으로 public static 멤버를 하나 마련해둠. 1. public static 멤버가 final 필드인 방식 public class Elvis { public static final ..

카테고리 없음 2022.07.11

2. 빌더를 고려하라 - 이펙티브 자바

본 글은 조슈아 블로크의 이펙티브 자바 개정 3판을 읽고 정리한 글 입니다. 정적 팩터리와 생성자의 단점은 매개변수가 많을 때 대응하기 어려움. 식품 포장의 영양 정보를 표현하는 클래스를 생각해보자. 영양정보는 1회 내용량, 총 n회 제공량, 1회 제공량 당 칼로리등 20개가 넘는 선택 항목으로 이루어져 있는데, 대부분의 선택 항목이 0이다. 이를 표현하는 정적 팩터리 혹은 생성자는 과거에는 점층적 생성자 패턴(telescoping costructor pattern)을 사용했다. 점층적 생성자 패턴이란? 필수 매개변수만 받는 생성자부터 선택 매개변수를 1개 ~ 전부 까지 늘려가는 방식 public class NutritionFacts { private final int servingSize; // 필수 ..

카테고리 없음 2022.07.09