스택, 큐, 덱은 특정 위치에서만 원소를 넣거나 뺄 수 있는 제한이 걸려 있습니다. 그래서 스택, 큐, 덱을 묶어서 Restricted Structure 라고 부르기도 합니다. Stack 스택은 가장 마지막으로 들어간 데이터가 가장 첫 번째로 나오는 성질(LIFO)을 가진 자료구조 입니다. 스택은 주로 문자열 폭발, 아름다운 괄호 만들기, 짝찾기 키워드 문제에서 주로 쓰입니다. 또한 "교차하지 않고" 라는 문장이 나오면 스택을 사용해야 하는 것 아닌지 염두해야 합니다. 삽입 및 삭제에 O(1), 탐색에 O(n) 이 걸립니다. 탐색에 O(n)이 걸리는 이유는 n번 째 요소를 찾기 위해 앞의 요소를 n번 반복해야 찾을 수 있기 때문입니다. 제일 상단이 아닌 나머지 원소들 확인/변경 기능이 제공되지 않습니다...
🧩 Algorithm
순열과 조합은 경우의 수를 기반으로 푸는 코딩 테스트 문제에 많이 활용됩니다. 여러가지 경우의 수를 생각해야 하는데 순서를 바꿔서 몇 개를 뽑는다.몇 개를 설정한다. 라고 했을 때는 순서가 상관 있으니 순열을 써야 하고, 순서를 바꾸지 않고 몇 개를 뽑는 게 중요하다. 설정하는게 중요하다 라는게 있다면 조합을 써야 합니다. 조합 조합에 '순서'는 없습니다. 순서 상관없이 오로지 몇명을 '다양하게' 뽑을 때 사용합니다. for 문 안에 재귀함수와 push/pop이 일어나는 과정만 이해하면 됩니다. 재귀함수를 통한 조합 구현 방법도 유용하지만 r이 작을 때에는 중첩 for문을 이용하는 게 더 효율적입니다. r이 10이거나 20이라면 재귀함수를 이용하는게 좋습니다. #include using namespace..
cnt 변수 값으로 메인 로직의 반복 횟수를 확인합니다. #include using namespace std; int n, cnt; int main() { cin >> n; int a = 0; for(int i=0; i < n ; i++){ for(int j=0 ; j < i ; j++){ a += i + j; cnt ++; } } cout
아스키 코드는 뭘까? 아스키 코드는 1963년 미국 ANSI에서 표준화한 정보교환용 7비트 부호체계입니다. 000(0x00)부터 127(0x7F)까지 총 128개의 부호가 사용됩니다. 1바이트를 구성하는 8비트 중에서 7비트만 쓰도록 제정된 이유는 나머지 1비트를 통신 에러 검출을 위한 용도로 비워두었기 때문입니다. 이는 영문 키보드로 입력할 수 있는 모든 기호들이 할당되어 있는 가장 기본적인 부호 체계입니다. 어떤 걸 외워야 할까? 알고리즘 코딩 테스트가 목적이라면 위 표에서 보이는 빨강으로 표시된 2가지만 외우면 됩니다. 대부분의 문제는 아스키코드의 알파벳을 활용합니다. 대문자 'A'는 65부터 시작하고 소문자 'a'는 97부터 시작합니다.
python보다 메모리 관리가 좋은 c++도 종종 시간 초과 문제가 발생합니다. ios_base::sync_with_studio(false); cin_tie(NULL); cout_tie(NULL); 이를 해결하기 위해, 위 코드로 해결하는 사례를 종종 볼 수 있습니다. 이 코드가 어떻게 시간 초과 문제를 해결해 주는지 궁금했습니다. 참고로 아래의 방법은 정공법이 아닌 일종의 편법이므로 통하지 않을 수 있습니다. 1. ios_base::sync_with_studio(false); 헤더를 보면 C++의 표준 입출력은 C와 다르게 구현되어 있음을 알 수 있습니다. C++에서 입출력 작업을 할 때마다 C의 표준 입출력과 동기화 되도록 설정되어 있는데, 이 과정에서 딜레이가 발생합니다. 따라서, ios_base:..