목록분류 전체보기 (372)
cyphen156

스택 다음으로 구현할 자료구조는 Queue다.사실 STL 문서를 뒤적이다가 알게 된 것인데, Stack과 Queue는 사실 뒤에 나올 Deque를 통해 구현된 어댑터 패턴이 적용된 클래스이다. 기본 구현은 이미 Deque를 통해 구현되어 있지만, 메서드 hiding을 통해 필요한 부분만 사용자에게 노출시키는 전략을 사용한다.하지만 우리는 다시 구현하는 입장이기 때문에 우선 Stack과 Queue를 구현한 뒤, Deque를 구현하고 나서 어댑터를 통해 Stack과 Queue 클래스를 수정하도록 하겠다.Queue큐는 선입선출의 기능을 갖고 있는 자료구조이다.📌 구현 목표본 글에서는 Queue(큐) 자료구조를 직접 구현템플릿 기반으로 자료형에 독립적인 구조를 구성내부적으로는 동적 배열을 사용하여 크기 확장(..

배열은 기본 자료형이니 구현하지 않고 넘어간다.리스트는 배열로 대체할 수 있으니 구현하지 않는다.그렇다면 남은것은 Stack, Queue - Deque / Priority Queue다.이 글에서 구현할 것은 Stack이다. 가변길이 할당과 템플릿 기반으로 구현하도록 하겠다.📌 구현 목표본 글에서는 Stack(스택) 자료구조를 직접 구현템플릿 기반으로 자료형에 독립적인 구조를 구성내부적으로는 동적 배열을 사용하여 크기 확장(reallocation)을 지원스택에 필요한 주요 기능인 Push, Pop, Top, Empty, Size, Clear를 제공복사 생성자와 대입 연산자를 통한 얕은 복사 방지(Deep Copy)도 고려🧱 프로젝트 구조Stack은 Linear_Data_Structures 네임스페이스에..

체스판 다시 칠하기 2M X N 크기의 단위 정사각형 보드를 사용한다.이 보드를 잘라서 K X K 크기의 정사각형 체스판을 만든다고 할 때, 검정색과 흰색이 번갈아 나타나도록 == 인접한 노드가 같은 색이 되지 않도록보드를 다시 칠해야 한다.다시 칠하는 갯수가 최소가 되도록 구현하라.이차원 누산 합을 이용하여 계산한다.제약사항1 1 주의 사항없다.CPP풀이체스판 다시 칠하기 2_25682.cpp/** * 백준 체스판 다시 칠하기 2_25682 * M X N 크기의 단위 정사각형 보드를 사용한다. * 이 보드를 잘라서 K X K 크기의 정사각형 체스판을 만든다고 할 때, * 검정색과 흰색이 번갈아 나타나도록 == 인접한 노드가 같은 색이 되지 않도록 * 보드를 다시 칠해야 한다. * 다시 칠하는 갯수가 ..

구간 합 구하기 5N X N의 행렬이 존재한다. (X1, Y1) 부터 (X2, Y2)까지의 합을 구하는 프로그램을 작성하라.예를 들어 (2, 2) ~ (3, 4)의 누적 합은 빨간 범위이고,(4, 4) ~ (4, 4)까지의 누적 합은 파란 범위이다.제약사항1 1 1 X1 Y1 주의 사항없다.CPP풀이구간 합 구하기 5_11660.cpp/** * 백준 구간 합 구하기 5_11660 * N X N의 행렬이 존재한다. * (X1, Y1) 부터 (X2, Y2)까지의 합을 구하는 프로그램을 작성하라. * 예를 들어 (2, 2) ~ (3, 4)의 누적 합은 빨간 범위이고, * (4, 4) ~ (4, 4)까지의 누적 합은 파란 범위이다. * * 제한사항 ********************************..

나머지 합N개의 수가 주어졌을 때,연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하라.제약사항0 1 -1 주의 사항최대 누산 합의 값은 1,000 * 1,000,000,000 이므로 long long int 자료형을 사용한다.==> Modulor 연산을 입력부에서 미리 처리하면 int자료형 만으로 충분하다. (Data 압축)CPP풀이나머지 합_10986.cpp/** * 백준 나머지 합_10986 * N개의 수가 주어졌을 때, * 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하라. * * 제한사항 ***************************************** * 0 Modulor 연산을 누산합에서 처리하면 int..

인간-컴퓨터 상호작용문자열을 입력받아 문자열의 구간[l, r]에서 특정 알파벳이 a가 등장한 횟수를 세는 프로그램을 만들어라.문제 해결 전략 알파벳마다 누산합 배열을 만들어 놓는다.제약사항String S0 Alpha is always lowerCasesector is from l to r-1 repeatCount q0 주의 사항없다.CPP풀이인간-컴퓨터 상호작용_16139.cpp/** * 백준 인간-컴퓨터 상호작용_16139 * 문자열을 입력받아 * 문자열의 구간[l, r]에서 * 특정 알파벳이 a가 등장한 횟수를 세는 프로그램을 만들어라. * * 문제 해결 전략 * 알파벳마다 누산합 배열을 만들어 놓는다. * * 제한사항 ****************************************..

갑자기 왜 이짓거리 다시하고 있냐 싶을 순 있는데 내가 배웟던 것들좀 다시 정리할려고 한다. 이전에 만들어놓은거 보니까 성능이고 나발이고 전부다 연결 리스트로 구현해놨더라고?참고하는 자료는 다음과 같다.자바로 배우는 쉬운 자료구조 자바로 배우는 쉬운 자료구조 | 이지영 - 교보문고자바로 배우는 쉬운 자료구조 | 『자바로 배우는 쉬운 자료구조』은 알고리즘에 대해 C와 자바 프로그래밍으로 구체화 시키는 방법을 다룬다. 자료구조와 알고리즘을 어렵고 추상적인 이론으로product.kyobobook.co.kr널널한 개발자 - 자료구조자료구조(DataStructure)란?우리가 다루는 데이터는 항상 같은 형태로 존재하지 않는다. 어떤 건 단순히 숫자 몇 개를 나열하는 것만으로 충분하고, 어떤 건 다양한 속성들이..

수열정수의 수열이 주어질 때 연속적인 몇일 동안의 온도 합이 가장 큰 값을 알아보고자 한다.누산 배열을 사용하여 값을 구해라.제약사항N is TotalDays1 K is ContinousDays0 -101 주의 사항없다.CPP풀이수열_2559.cpp/** * 백준 수열_2559 * 정수의 수열이 주어질 때 연속적인 몇일 동안의 온도 합이 가장 큰 값을 알아보고자 한다. * 누산 배열을 사용하여 값을 구해라. * * 제한사항 ***************************************** * N is TotalDays * * 1 #define MAX_SIZE 100001using namespace std;static int N, K; static int..