목록Dev (18)
'll Hacker

#2164 카드 2, C++ 사용https://www.acmicpc.net/problem/2164 티어는 실버IV이고, 문제는 다음과 같다.문제 이해# 우선 제일 위에 있는 카드를 바닥에 버린다.# 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다.# 규칙 : 버리고 밑으로 옮기고,,, 반복# 예를 들어, N=6 -> 1,2,3,4,5,6#0 1 버리고#1 2는 맨뒤로, 3,4,5,6,2#2 3 버리고#3 4는 맨뒤로, 5,6,2,4#4 5는 버리고#5 6은 맨뒤로, 2,4,6#6 2는 버리고#7 4는 맨뒤로, 6,4#8 6은 버림#9 4가 남게됨따라서 큐 활용해야한다.# 예를 들어, N=4 -> 1,2,3,4#0 1버리고#1 2는 맨뒤로 3,4,2#2 3 버리고, 4,2#3 4는 ..

동적 프로그래밍동적 프로그래밍(DP)은 큰 문제를 작은 하위 문제로 나누고, 각 하위 문제의 해답을 저장하여 같은 문제를 반복해서 계산하지 않도록 하는 최적화 기법입니다.핵심 개념문제의 중복성 (Overlapping Subproblems)하나의 문제를 여러 개의 작은 문제로 나누었을 때, 같은 하위 문제가 반복적으로 나타나는 경우를 의미합니다.예: 피보나치 수열 계산 (Fibonacci Sequence)최적 부분 구조 (Optimal Substructure)어떤 문제의 최적 해가 부분 문제의 최적 해를 이용하여 구할 수 있는 성질을 의미합니다.예: 최단 경로 문제 (Shortest Path)메모이제이션 (Memoization) 또는 테이블화 (Tabulation)메모이제이션: 하향식(Top-down) 접..

이진탐색 알고리즘 설명순차탐색리스트 안에 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법이다. 정렬되지 않은 리스트에서 데이터를 찾아야할 경우,리스트의 데이터에 하나씩 방문하면서 특정한 문자열과 같은지 검사하는 코드 구현할 경우,리스트에 특정값의 원소가 있는지 체크하는 경우,리스트 자료형에서 특정한 값을 가지는 원소의 개수를 세는 count( ) 메서드를 이용하는 경우 사용된다. 이처럼 순차탐색은 데이터 정렬 여부와 상관없이 가장 앞에 있는 원소부터 하나씩 확인해야한다.데이터의 개수가 N개일 때 최대 N번의 비교연산이 필요하므로 순차탐색의 최악의 경우 시간 복잡도는 O(N)이다. 이진탐색이진 탐색은 베열 내부의 데이터가 정렬되어 있어야만 사용할 수 있다. 탐색 범위를 절반씩 ..

정렬 알고리즘선택 정렬 삽입 정렬 버블 정렬 합병 정렬 퀵 정렬 개념 참고)https://hsp1116.tistory.com/33 10825, 국영수, C++학생 정보 = 구조체 선언sort( ) 사용 #include #include #include using namespace std;struct student { // 학생 정보 구조체: 이름, 국어 점수, 영어 점수, 수학 점수 string name; int kor, eng, math;};// 비교 함수bool cmpAdv(const student& s1, const student& s2) { if (s1.kor != s2.kor) {// 국어 점수가 감소하는 순서 return s1.kor > s2.kor; } if (s1.eng != s2.eng)..

그래프란?노드(Node)와 간선(Edge)으로 표현되며 이때 노드를 정점이라고도 말한다.그래프 탐색이란 하나의 노드를 시작으로 다수의 노드를 방문하는 것을 말한다.또한, 두 노드가 간선으로 연결되어있다 = 두 노드는 인접하다 인접행렬(Adjacency Matrix) : 2차원 배열로 그래프의 연결 관계를 표현하는 방식연결리스트라는 자료구조를 이용해 구현하는데, C++이나 자바와 같은 프로그래밍 언어에서는 별도로 연결 리스트 기능을 위한 표준 라이브러리를 제공 인접 리스트(Adjacency List) : 리스트로 그래프의 연결 관계를 표현하는 방식 vector의 배열을 사용하면 편리함.실제로 연결된 노드들에 대한 정보만 저장하기 때문에, 모든 벡터들의 원소의 개수의 합이 간선의 개수와 같음. 간선의 개수..

1158, 요세푸스 문제, C++이 문제를 그대로 이해하면 될 것 같다.그니까, 문제의 예를 보면 입력을 7 3 로 받는다면 이 7의 의미는 앉아있는 사람의 수라고 생각할 수 있고,1, 2, 3, 4, 5, 7을 나타낼 수 있다. 3은 제거되는 사람의 번호를 의미를 하게 되는데나는 반복문을 구현할 때 1~3까지 큐에 삽입 후 그 인덱스 번호가 3인 경우, remove 동적배열에 삽입하고,인덱스 번호가 3이 아닌 경우 큐 맨 뒤에 삽입 #include #include #include using namespace std;vector calcJosephus(queue Q,int N,int K){ vector remove; int q_front, j=0; while(N!=remove.size()) { for..

그리디 알고리즘 눈앞의 이익만 우선 추구하는 알고리즘최적해를 찾을 수 있으면 그것을 목표로 삼고 찾기 어려운 경우에는 주어진 시간 내에 그런대로 괜찮은 해를 찾는 것을 목표로 삼는다 - 그래서 대부분 최적화 문제를 대상으로 함 예를 들어, n개의 정점을 가지고 사이클을 이루지 않은 총 n-1개의 간선으로 이뤄지는 최소 신장 트리를 만들고자 한다.아직 간선이 하나도 없는 상태라고 하면, n-1개의 간선이 될 때까지 집합을 키워나가게 된다. 이때, 어떤 간선을 선택할지 결정해야한다.최소신장트리같은 경우에는 간선을 하나 더할 때마다 해당 간선이 기존에 선택된 간선들과 사이클이 형성되면 안된다.Greedy(c){ s 1) 원소를 선택하는 기준이 눈앞의 이익을 우선2) 원소를 하나 더하기 전에 해당 원소를 더함으..

모놀리식 아키텍처 vs 마이크로 서비스 아키텍처모놀리식 아키텍처= 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 어떤 기능이 통합되어 있는 구조장점 : 초기 단계에서 설계하기 용이함, 단순한 구현과정, 코드 관리 간편.단점 : 서비스가 성장할수록 서비스 간의 관계가 매우 복잡 마이크로 서비스 아키텍처= 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 각 기능이 독립된 서비스로 분리되어 실행되며, API Gateway 등을 통해 서로 통신.장점 : 서비스 재사용, 서비스 변경 시 전체 영향 안 미침, 사용자의 요구사항에 따라 가용성을 즉각적으로 확보해야 하는 IaaS 환경에 적합함 IaaS클라우드 서비스의 한 종류로, 물리적 하드웨어 대신 가상화된 인프라를 클라우드에서 제공단점 : 관리가 복잡하며,..