분류 전체보기 214

10845번 큐 - C++

[문제] https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net [풀이] 큐 [코드] #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); queue q; int n; cin >> n; while(n--){ string s; cin >> s; if(s == "push"){ int t; cin >> t; q.push(t); } else if(s ==..

카테고리 없음 2022.07.20

2493번 탑 - C++

[문제] https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net [풀이] 스택 [코드] #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; stack S; vector V; int cnt = 1; while(n--){ int t; cin >> t; if(S.empty()) { V.push_back(0); } else { if(S...

카테고리 없음 2022.07.20

10773번 제로 - C++

[문제] https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net [풀이] STL 스택을 이용하는 문제이다. 입력된 정수가 0일 경우에는 가장 최근에 쓴 수를 지우므로, 스택의 empty()를 이용하여, 값이 들어있는 지 확인후, pop() 함수로 삭제하면 된다. 입력된 정수가 0이 아닌 경우에는 원소를 스택에 집어넣기 위해서 push() 함수를 이용하면 된다. 합계 결산은 empty()를 이용하여 값이 있는지 확인하고..

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

정적 팩터리 메서드 - 이펙티브 자바

정적 팩터리 메서드(static factory method)란 클래스의 인스턴스를 반환하는 정적 메서드이다. public static Boolean valueOf(boolean b){ return b ? Boolean.TRUE : Boolean.FALSE; } 다음 코드는 Boolean 박싱 클래스에서 발췌한 예시이다. boolean 기본 타입을 매개변수로 박아 박싱 클래스인 Boolean 객체 참조로 변환하는 코드이다.(정적 팩터리 메서드 예시) [정적 팩터리 메서드 장점] 1. 이름을 가질 수 있다. 생성자인 BigInteger(int, int, Random), 정적 팩터리 메서드인 BigInteger.probablePrime 중 후자인 정적 팩터리 메서드가 의미를 잘 전달 한다. 2. 호출할 때마다..

카테고리 없음 2022.07.08