전체 글 66

[자료구조] 그래프

그래프는 관계에 특화된 자료 구조로 정점(Vertex)과 간선(Edge)으로 구선된다. 정점 : 고유하게 식별되는 객체 간선 : 정점간의 관계 종류 그래프는 간선이 방향성을 가지는 방향 그래프와 무방향 그래프로 구분할 수 있고 간선이 단순 연결 이상의 정보를 가지는 가중치 그래프등 여러가지 종류가 있다. 용어 정리 인접(Adjacent) : 간선으로 연결된 정점끼리를 부르는 말 부속(Incident) : 정점에 연결된 간선 차수(Degree) : 정점에 부속된 간선의 수 진입 차수(In - Degree) : 정점으로 들어오는 방향 진출 차수(Out - Degree) : 정점으로 나가는 방향 경로(Path) : 한 정점에서 다른 정점까지 간선으로 연결된 정점을 순서대로 나열한 리스트 경로 길이(Path l..

코딩/자료구조 2022.07.04

[자료구조] 큐(queue)

큐는 리스트의 일종으로 스택의 LIFO (Last - In First -Out) 구조가 아닌 FIFO (First - In First -Out) 구조를 가지고 있다. FIFO는 (First - In First -Out) 이름과 같이 가장 처음에 들어간 데이터가 가장 먼저 나오는 구조이다. 삽입이 일어나는 쪽을 뒤(Rear) 삭제가 일어나는 쪽을 (Front)라고 한다. 프린트 큐, CPU스케줄링, 데이터 버퍼, BFS 등에 사용된다. queue 만들기 #include //큐를 사용하기 위해 필요한 헤더 queue Q; //변수명 Q로 큐를 만듬 queue 변수 명 먼저 queue를 만들기 위해선 먼저 라는 헤더를 가져올 필요가 있다. 그리고 큐를 만들기 위해 queue 변수 명 을 사용한다. push f..

코딩/자료구조 2022.07.04

[자료구조] 스택(Stack)

스택은 리스트의 일종으로 연산이 한 쪽 끝에서 이루어지는 자료구조다. LIFO (Last - In First -Out)구조 (가장 나중에 들어간게 가장 빨리 나오는 구조) 스택의 끝을 Top 시작을 Bottom 이라고 한다. stack 만들기 #include //스택을 사용하기 위해 필요한 헤더 stack st; // 스택 st를 만듬 stack 변수 명 먼저 스택을 사용하기 위해선 #include 가 필요하다. 그리고 스택을 만드는데 stack 변수 명 을 사용 할 필요가 있다. push for (int i = 0; i { 4, 3, 2, 1, 0} push는 스택에 ( )에 들어간 값을 넣을 수 있으며 값이 앞에서 ..

코딩/자료구조 2022.07.04

백준 2164 카드2

https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); queue Q; int k; cin >>k; for (int i = 0; i < k; i++) { Q.push(i + 1); } while (Q.size() != 1) { Q.pop(); Q..

코딩/문제 2022.06.28

백준 17298 오큰수

https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net #include #include #include using namespace std; int arr[1000001]; int main() { cin.tie(0); ios_base::sync_with_stdio(0); int n; cin >> n; stack st; vector Vec(n + 1, -1); for (int i = 1; i > arr[i]; } for (int i = 1; i

코딩/문제 2022.06.28

백준 18258 큐2

https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); queue Q; int num; cin >> num; for (int i = 0; i >K; if (K == "p..

코딩/문제 2022.06.28

백준 1874 스택 수열

https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net #include #include using namespace std; bool check[100000] = { false }; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); stack sta; string out; sta.p..

코딩/문제 2022.06.28

백준 4949 균형잡힌 세상

https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다 www.acmicpc.net #include #include #include using namespace std; int main() { while (true) { string str; getline(cin, str); stacka; if (str[0] == '.') break; for (int i = 0; i < str.length() - 1; i++) { if (str[i] == '(') { a.pu..

코딩/문제 2022.06.28

백준 9012 괄호

https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net #include #include using namespace std; int main() { int input; cin >> input; stack s; for (int i = 0; i > str; int check = 0; int count[2] = { 0 }; for (int i = 0; i < str.s..

코딩/문제 2022.06.28