전체 글69 [자료구조] - 스택(Stack)의 구조와 구현 1. 스택(Stack)이란? 스택(stack)이란 단어의 사전적인 뜻은, "쌓아놓은 더미"이다. 쌓아놓은 접시들을 생각하면 이해가 쉬울 것이다. 후입선출 (LIFO : Last - In - First - Out) 스택의 중요한 특징이다. 앞서 말한 접시 더미의 예시처럼, 스택에서는 가장 마지막에 들어온 데이터가 가장 먼저 나간다는 뜻이다. 다시 말해, 스택에서의 입출력은 맨 위에서만 일어난다. (들어올때도 맨 위, 나갈때도 맨 위) 이러한 특징 때문에 스택의 중간에서는 데이터를 삽입하거나 삭제할 수 없다. 2. 스택 구현을 위한 기본 함수 스택은 1차원 배열을 이용하여 간단한 방법으로 구현이 가능하다. 단 1차원 배열을 이용하면 스택의 크기가 고정된다는 단점이 있다. (스택의 크기를 가변적으로 구현하려면.. 2023. 12. 3. [자료구조] - Ch1) 시간복잡도 (Time Complexity) 1. 시간복잡도(Time Complexity)란? 시간복잡도란 간단히 말하자면, 어떠한 알고리즘의 연산 횟수를 수치로 나타낸 것을 말한다. 예를 들어, 어떤 자연수를 n번 더하는 문제를 풀기 위하여 세 가지의 알고리즘을 만들었다고 가정하자. 이처럼 입력의 개수 n에 따라서 변하는 연산의 수행횟수를 n에 대한 함수로 나타낸 것을 시간복잡도 함수라고 말하며, T(n)으로 표기한다. 시간복잡도 표기법은 크게 3가지가 있다. Ο(빅오 표기법) - 함수의 상한 (최악의 경우) Ω(빅오메가 표기법) - 함수의 하한 (최선의 경우) θ (빅세타 표기법) - 함수의 상한과 하한 (평균) 빅오 표기법 (Big-O notation) 빅오 표기법은, 간단히 말해 시간 복잡도의 점근적 상한을 나타낸 것이다. (즉 최악의 상황.. 2023. 12. 1. [C++] - 시간초과가 발생하는 경우 해결 방법 C++를 이용하여 백준 문제를 풀면서 시간초과가 발생하는 경우, 아래의 두 줄을 추가해주면 해결되기도 한다. ios::sync_with_stdio(false); cin.tie(null); 이 코드의 의미가 무엇인지 알아보자. ios_base::sync_with_stdio(false) 간단히 말해, C와 C++의 동기화를 비활성화시키는 코드이다. 단, 이 구문을 쓰게 되면 C와의 동기화가 해제되어 버퍼가 분리되었기 때문에 C의 입출력 방식(scanf, printf, gets, puts, getchar, putchar 등)을 사용할 수 없게 된다. 그러므로 입출력을 할 때 cin, cout와 같은 C++의 입출력 방식만 사용해야 한다. cin.tie(null) cout > name; c++에서는 기본적으로 .. 2023. 11. 29. 이전 1 ··· 9 10 11 12 다음