자료구조4 [백준/BOJ][C++] 20920번 영단어 암기는 괴로워 #include #include #include #include using namespace std; int main() { // 쓰레드 환경이 아닐때 버퍼를 분리하여 처리속도를 빠르게 해줌 ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, M; cin >> N >> M; map freq; // 단어별 빈도수(단어, 빈도수) int maxFreq = 0; // 최대 빈도수 for (int i = 0; i > word; // 길이가 M보다 작으면 외우지 않음 if (word.length() < M) continue; freq[word]++; // 단어별 빈도수 체크 maxFr.. 2023. 9. 10. [면접 준비] 배열이 순차적으로 데이터를 저장하는 이유 1. 배열의 특징 - 데이터를 순차적으로 저장 - 인덱스를 이용하여 데이터에 빠르게 접근 가능 2. 배열이 순차적으로 저장되는 이유 - 실제 메모리 상에서 데이터가 순차적으로 저장되면 맨 앞의 주소와 해당 자료형의 byte수, 인덱스 번호만으로 데이터에 접근할 수 있기 때문이다.([2,4,5] -> 2의 주소 1000 -> 5의 주소 = 2의 주소(1000) + int형(4byte)*인덱스번호(2) = 1008) - 즉, 인덱스를 이용해 데이터에 빠르게 접근하기 위해 순차적으로 저장되는 것이다. 3. 데이터가 순차적으로 저장되는 배열의 단점 - 삽입 삭제가 느림 -> 삭제나 삽입 시 해당 위치 이후의 모든 원소들을 한칸씩 이동시켜야하기 때문 - resizing이 어려움 -> 크기가 예측이 어려운 데이터를.. 2023. 7. 26. [면접 준비][자료구조] 스택과 큐의 차이점 1. 스택(Stack) - 나중에 들어간 것이 먼저 나오는 후입선출의 구조이다.(LIFO) - 비어있는 스택에서 원소를 추출하면 stack underflow - 스택이 넘치는 경우 stack overflow - ex) 뒤로가기, 실행취소, 역순 문자열 만들기 등 2. 큐(Queue) - 먼저 들어간 것이 먼저 나오는 선입선출의 구조(FIFO) - 한쪽 끝에서는 삽입 작업이, 다른 쪽 끝에서는 삭제 작업이 양쪽으로 이루어짐 - ex) 줄을 서서 기다려야하는 모든 행동들, 프로세스 관리, 너비우선탐색(BFS) 등 스택은 나중에 들어간 것이 먼저 나오는 후입선출, LIFO의 구조이고, 큐는 먼저 들어간 것이 먼저 나오는 선입선출, FIFO의 구조입니다. 스택의 예시로는 실행취소 등이 있고, 큐의 예시로는 줄을.. 2023. 7. 22. [면접 준비][자료구조] 벡터, 리스트, 맵, 딕셔너리 1. 배열 - 스택에 생성되는 인덱스 기반의 기본 자료구조 - 길이가 고정되어 있음 - 메모리의 효율성이 높음 - 원소에 직접 접근하는 것이 쉬움 - 원소를 중간에 추가하거나 삭제하는 것은 어려움 2. 벡터 - 힙에 생성되어 메모리에 동적으로 할당되는 iterator 기반 컨테이너 - 배열과 같이 연속적인 메모리 값에 할당되고 특정 원소에 접근하기 쉬움 - 속도 면에서는 배열에 비해 성능이 떨어지지만 자료를 효율적으로 관리할 수 있고, 예외처리가 쉬움 - 배열과 마찬가지로 원소를 중간에 추가하거나 삭제하는 것은 어려움 3. 리스트 - 비연속적인 메모리 값을 가짐 - 포인터로 연결되어 연결리스트라고 불림 - 각 원소의 추가 및 제거가 빠르고 쉬움 - 원소에 직접 접근하는 것은 불가능하고 처음이나 끝부터 차.. 2023. 7. 21. 이전 1 다음