본문 바로가기

스택8

[백준/BOJ][C++] 12789번 도키도키 간식드리미 #include #include #include using namespace std; int main() { // 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; queue curLine; // 현재 줄 stack otherLine; // 또 다른 줄 for (int i = 0; i > x; curLine.push(x); } int checkNum = 1; while (true) { if (!curLine.empty() && curLine.front() == checkNum) { // 현재 줄에 순서에 맞.. 2023. 8. 23.
[백준/BOJ][C++] 4949번 균형잡힌 세상 #include #include #include #include using namespace std; int main() { // 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); vector output; while(true) { string s; getline(cin, s); // 공백 포함 문자열 입력 if (s == ".") break; stack stk; bool isBalanced = true; // 균형유무 for (int j = 0; j < s.size(); j++) { char curWord = s[j]; if (curWord == '(' || curWord ==.. 2023. 8. 21.
[백준/BOJ][C++] 9012번 괄호 #include #include #include #include using namespace std; int main() { // 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int T; cin >> T; vector output; for (int i = 0; i > s; stack stk; bool isVPS = true; for (int j = 0; j < s.size(); j++) { char curWord = s[j]; if (curWord == '(') { // '('인 경우 스택에 넣어줌 stk.push(curWor.. 2023. 8. 21.
[백준/BOJ][C++] 10773번 제로 #include #include using namespace std; int main() { // 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int K; cin >> K; stack stk; int sum = 0; for (int i = 0; i > x; if (x == 0) { sum -= stk.top(); stk.pop(); } else { stk.push(x); sum += x; } } cout 2023. 8. 21.
[백준/BOJ][C++] 28278번 스택 2 #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; struct Stack { private: int Top; int* elements; public: Stack(int N) { elements = new int[N]; Top = -1; } ~Stack() {}; void push(int n) // 1 { elements[++Top] = n; } int pop() // 2 { if (!isEmpty()) { return elements[Top--]; } else { return -1; } } int Length() // 3 { .. 2023. 8. 19.
[면접준비] 싱글톤과 static의 차이점 1. 싱글톤 - 단 하나의 객체(인스턴스)만을 생성하여 해당 객체를 공유하는 디자인 패턴 - 객체를 생성하려고 할 때마다 이미 생성된 것을 반환하거나 없다면 해당 시간에 처음 생성함 - 정적 클래스와 달리 싱글톤 클래스는 확장, 재정의, 인터페이스 구현이 가능 - 생성 시점을 조정 가능 - 객체이므로 힙에 싱글톤 객체가 저장됨 -> 쓰레드간 공유 가능 - 직렬화가 가능 2. static - 객체를 만들지 않고, 생성자도 갖지 않음 - 인터페이스 구현 불가능 - override 불가능 - 퍼포먼스는 빠름 - 절차지향적 성향이 강함 -> 무분별한 사용은 객체 지향을 해침 - 어플리케이션이 메모리에 로드될 때 스택에 바로 초기화 - 정적 스택에 저장되기 때문에 쓰레드 관리가 어려움 Q. 왜 static을 쓰지.. 2023. 8. 16.
[면접 준비][자료구조] 스택과 큐의 차이점 1. 스택(Stack) - 나중에 들어간 것이 먼저 나오는 후입선출의 구조이다.(LIFO) - 비어있는 스택에서 원소를 추출하면 stack underflow - 스택이 넘치는 경우 stack overflow - ex) 뒤로가기, 실행취소, 역순 문자열 만들기 등 2. 큐(Queue) - 먼저 들어간 것이 먼저 나오는 선입선출의 구조(FIFO) - 한쪽 끝에서는 삽입 작업이, 다른 쪽 끝에서는 삭제 작업이 양쪽으로 이루어짐 - ex) 줄을 서서 기다려야하는 모든 행동들, 프로세스 관리, 너비우선탐색(BFS) 등 스택은 나중에 들어간 것이 먼저 나오는 후입선출, LIFO의 구조이고, 큐는 먼저 들어간 것이 먼저 나오는 선입선출, FIFO의 구조입니다. 스택의 예시로는 실행취소 등이 있고, 큐의 예시로는 줄을.. 2023. 7. 22.
[C++] 메모리 구조 1. Text 영역(Code 영역) - 작성한 코드들이 컴파일 이후 기계어로 번역되어 저장되어 있는 공간 - 프로그램이 끝날때까지 메모리에 남아있음 - 읽기 전용 공간 2. Rodata 영역 - Read Only data, 즉 읽기 전용 data들이 저장되는 공간 - const 변수, 문자열 상수, printf의 중괄호 부분이 주로 들어감 3. Data 영역 - 전역 변수, 전역 배열, 전역 구조체 등을 저장하는 공간 - 정적 변수(static)도 저장 - 초기화 한 이후의 전역변수를 저장 4. Bss 영역 - Data와 매우 비슷 - 전역 변수(배열, 구조체 포함), 정적 변수 저장 - 초기화 이전의 전역변수를 저장(차이점) cf) 전역변수들은 main이 실행되기 전에 bss에 저장되며, bss 영역에.. 2023. 7. 19.