1. 덱(Deque)-양 끝에서 자료를 넣고 양 끝에서 뺄 수 있는 자료구조-Double-ended queue 의 약자-push_back : queue의 push-pop_front : queue의 pop-push_front : 덱의 앞에 자료를 넣는 연산-pop_back : 덱의 뒤에서 자료를 빼는 연산-front : 덱의 가장 앞에 있는 자료를 보는 연산-back : 덱의 가장 뒤에 있는 자료를 보는 연산-size-empty 2. 관련 문제-10866(덱 구현)
1. 큐(Queue)-한쪽 끝에서만 자료를 넣고 다른 한쪽 끝에서만 뺄 수 있는 자료구조-먼저 넣는 것이 가장 먼저 나오기 때문에 First In First Out(FIFO) 라고도 함-push : 큐에 자료를 넣는 연산-pop : 큐에서 자료를 빼는 연산-front : 큐의 가장 앞에 있는 자료를 보는 연산-back : 큐의 가장 뒤에 있는 자료를 보는 연산-empty : 큐가 비어있는지 아닌지를 알아보는 연산-size : 큐에 저장되어 있는 자료의 개수를 알아보는 연산 -C++ : STL의 queue 사용-Java : java.util.Queue 사용 2. 관련 문제-10845(큐 구현)-1158(조세퍼스 문제)
1. 스택-한쪽 끝에서만 자료를 넣고 뺄 수 있는 구조-마지막으로 넣은 것이 가장 먼저 나오기 때문에 Last In First Out(LIFO) 라고도 한다.-push : 스택에 자료를 넣는 연산-pop : 스택에서 자료를 빼는 연산-top : 스택의 가장 위에 있는 자료를 보는 연산-empty : 스택이 비어있는지 아닌지를 알아보는 연산-size : 스택에 저장되어 있는 자료의 개수를 알아보는 연산-C++의 경우에는 STL의 stack 사용-Java의 경우에는 java.util.Stack 사용 2. 스택 구현-10828번 3. 관련 문제-9012 괄호 문제-10799 쇠막대기 문제-1406 에디터 문제
1. 테스트 케이스 입력 팁-테스트 케이스 형식으로 주어지는 경우에는-각각을 독립적인 문제로 생각하고 풀면 된다-즉, 전체 테스트 케이스를 한꺼번에 입력 받은 다음에 푸는 것이 아니라,-첫번째 테스트 케이스 입력 받고 풀고, 그 다음 입력 받고 풀고 이런식으로 해라-그 이유는 만약 테스트 케이스 갯수 T를 알지 못하면 한꺼번에 입력 받기 위한 배열의 크기를 정하기 어렵고-전체 입력이 매우 큰 경우에 매우 큰 크기의 배열이 필요하게 되기 때문이다 2. A+B 의 문제를 푸는 예1) 테스트 케이스의 갯수 T 가 주어지는 경우int t; int a, b;scanf("%d", &t); // 테스트 케이스 갯수를 t에 저장while(t--){scanf("%d %d",&a, &b);printf("%d\n",a+b)..
1. 알고리즘-알고리즘이란 어떠한 문제를 해결하기 위한 여러 동작들의 모임이다-알고리즘 공부에 가장 효과적인 것은 문제풀이! 2. 알고리즘 문제 사이트 -Baekjoon Online Judge-알고스팟-Codeforces-Topcoder 3. 공부하는 방법1) 먼저 알고리즘이나 문제를 푸는 방법을 이해 -완벽하지 않거나 일부만 이해했어도 성공!2) 관련 문제를 풀어본다 -한 문제는 길어야 2시간 정도만 고민 -모르겠으면 포기하고 정답 소스 또는 풀이를 보자3) 1)번과 2)번에서 이해가 잘 가지 않는 부분이 있으면 질문 -설마 이런 것도 질문해도 될까 고민 되는 것도 질문하라는 뜻4) 다시 알고리즘을 이해해보고 문제를 다시 풀어본다 -모르겠으면 포기하고 다시 풀이를 보자 -그래도 모르겠으면 다른 일을 하..