Study 25

트리

트리 :계층적인 구조를 나타내는 자료구조트리는 부모-자식 관계의 노드들로 이루어짐트리의 용어노드(node): 트리의 구성요소에지, 간선(edge): 노드들 간의 연결선, 관계가 있음을 표현함루트(root): 부모가 없는, 계층구조에서 가장 높은 곳에 있는 노드서브트리(subtree): 하나의 노드와 자손들로 이루어짐단말노드(terminal): 자식이 없는 노드레벨(level): 트리의 각층의 번호높이(height) : 트리의 최대 레벨차수(degree): 노드의 자식 노드수이진트리각 노드에는 최대 두개의 자식 노드가 존재모든 노드의 차수가 2 이하가 된다.서브 트리 간의 순서가 존재( 왼쪽, 오른쪽 )노드의 개수가 n개이면 간선의 개수는 n-1높이가 h : 최소 h개~최대 2^h -1개의 노드를 가짐.n..

Study/자료구조 2024.10.17

카드게임(백준 2164/C++)

#include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; queue myQueue; for (int i = 1; i 1) { myQueue.pop();//front 부분에 있는 데이터를 삭제하고 확인하는 연산이다. myQueue.push(myQueue.front());//back 부분에 새로운 데이터를 삽입하는 연산이다. & 맨 위 카드를 가장 아래밑으로 이동 myQueue.pop();//ex 2가 두개 들어가 있으니 삭제 } cout

Study/자료구조 2024.10.15

오큰수 구하기(백준 17298/C++)

스택에 새로 들어온 수가 top에 존재하는 수보다 크면 그 수는 오큰수가 된다.오큰수를 구한 후 수열에서 오큰수가 존재하지 않는 숫자에 -1을 출력해야한다.문제 푸는 순서 스택이 채워져 있고, A[index]>A[top]인 경우 pop한 인덱스를 이용하여 저답 수열에 오큰수를 저장합니다. pop은 조건을 만족하는 동안 계속 반복합니다. 과정 1을 마치면 과정 2로 넘어갑니다.현재 인덱스를 스택에 push하고 다음 인덱스로 넘어갑니다.과정 1~2를 수열 길이 만큼 반복한 다음 현재 스택에 남아 있는 인덱스에 -1을 저장합니다.   #include #include #include using namespace std;int main() { ios::sync_with_stdio(false); cin.tie(NU..

Study/자료구조 2024.10.15

스택으로 수열 만들기(백준 1874/C++)

1부터 n까지 자연수를 스택에 차례대로 넣고, 주어진 수열을 만들기 위해서 값을 꺼내는 방식수열을 만들 수 있으면 push, pop 연산을 출력하고, 만들 수 없다면,  NO출력주어진 수열을 만들기 위해서는 스택에서 숫자를 꺼내는 순서가 반드시 후입선출이어야 한다.만약 수열을 다음 숫자를 만들기 위해서 스택에서 pop을 해야 하지만, 최상단의 값이 그 값 이그 값보다 크면, 해당 수열을 만들 수 없다.스택 연산 수행 방법1. 현재 수열 값 ≥ 자연수2. 현재 수열 값 #include #include #include using namespace std;int main() { ios::sync_with_stdio(false);//동기화를 끊어서 C++의 입출력은 C의 입출력과 별개로 동작하게 되므로, 입출력..

Study/자료구조 2024.10.13

Postfix 수식계산(백준 1935/C++)

후위표기식?후위표기식은 연산자가 피연산자 뒤에 오는 수식 표기법이다.예를 들어,중위 표기식: A+B후위 표기식: AB+ #include #include #include #include // 소수점 출력을 위한 라이브러리using namespace std;int main() { int N; cin >> N;//피연산자의 개수 입력받기 string expression;//후위 표기식이 문자들로 이루어진 문자열이다. //피연산자는 A,B,C와 같은 문자로 표현, 연산자는 +,-,*,/로 표현=> 두 종류의 문자들이 모여 하나의 후위 표기식을 이루므로, string이 적합하다. cin >> expression; double values[26];//피연산자 A~Z의 값을 저장할 배열 for (int i = 0;..

Study/자료구조 2024.10.12

괄호검사(백준 9012/C++)

괄호검사(백준 9012/C++)문자열 순차 탐색: 괄호 문자열을 하나씩 왼쪽부터 순서대로 확인한다.여는 괄호 (가 나오면 스택에 넣는다.닫는 괄호 )가 나오면 스택에서 여는 괄호를 꺼낸다.=>만약 스택이 비어 있다면, 이는 닫는 괄호가 먼저 나왔다는 뜻이므로 "올바르지 않은 괄호 문자열"이 된다.=>문자열을 다 탐색한 후에도 스택에 여는 괄호가 남아있으면, 이는 닫는 괄호가 부족하다는 뜻으로 , "올바르지 않은 괄호 문자열"이다.#include#include #include using namespace std;int main() { int testcase; cin >> testcase;// 몇번 돌지 입력받음 while (testcase--) { stack st; string s; cin >> s;..

Study/자료구조 2024.10.12

스택 & 큐 & 덱

스택: LIFO : Last-In First-Out- 가장 최근에 들어온 데이터가 가장 먼저 나감깊이 우선 탐색   스택 상단 : top삽입/삭제 연산      스택의 용도함수 호출Undo 기능계산기미로탐색 등  1차원 배열stack[0]...stack[top] : 먼저 들어온 순으로 저장top : 가장 최근에 입력되었던 자료를 가리키는 변수, 삽입과 삭제가 일어나는위치top =  -1 : 공백 상태top = stack size : 포화상태삽입(push), 삭제(pop)is_empty(s) : 스택이 공백 상태인지 검사is_full(s) : 스택이 포화 상태인지 검사#include stack st;bool empty() const; #비어 있는지 확인 st.empty()size_type size() c..

Study/자료구조 2024.10.11

입력과 출력문

입력문과 출력문 변수가 들어갈 곳에 중괄호 {}를 넣고 마지막에 .format(변수)를 쓰면 된다. 여러 변수를 출력할 수 있는데 반드시 중괄호 {}의 갯수와 format안에 있는 변수 숫자는 같아야 한다. height = 175weight = 61print('나의 키는 {}cm 이고 몸무게는 {}kg이다.'.format(height, weight))나의 키는 175cm 이고 몸무게는 61kg이다.print('{} and {}'.format('Python','Numpy'))print('{1} and {0}'.format('cat','dog'))Python and Numpydog and cat print 문은 한줄에 결과 값을 계속 이어서 출력하려면 end를 사용해 끝 문자를 지정해야 한다.for i in..

Study/Python 2024.05.17

투 포인터(연속된 자연수의 합 구하기)- 백준 2018번

포인터 : 컴퓨터 메모리의 주소만을 저장하는 변수다. (어떤 대상이나 장소를 가리키는 존재라는 뜻) -> 파이썬에서는 참조를 사용함.문제어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한다. 이때, 사용하는 자연수는 N이하여야 한다.예를 들어, 15를 나타내는 방법은 15, 7+8, 4+5+6, 1+2+3+4+5의 4가지가 있다. 반면에 10을 나타내는 방법은 10, 1+2+3+4의 2가지가 있다.N을 입력받아 가지수를 출력하는 프로그램을 작성하시오.입력첫 줄에 정수 N이 주어진다.출력입력된 자연수 N을 몇 개의 연속된 자연수의 합으로 나타내는 ..

Study/자료구조 2024.05.16