A. 먼저 들어간게 나중에 나오는 First In Last Out 구조이다.
B. 먼저 들어간게 먼저 나오는 First In First Out 구조이다.
C. top 메서드는 스택의 맨 위에 있는 값을 꺼내고, 해당 값을 반환한다.
D. 스택에 할당된 공간이 꽉 차면 더이상 push 할 수 없다.
E. 재귀 함수를 실행할 때 사용된다
1번 문제는 스택에 대해 LIFO만 생각하고 있다가 덜렁거리면서 막 눌렀던 문제로 기억한다. ㅎ...ㅎ; 그래서 더 우왕좌왕하면서 풀이도 제대로 못했던 문제. 다시한번 반성!
오답 선택 이유
답 풀이(optional)
B,C
function calc(expression) {
// 1. 문자를 하나씩 검사한다.
// 2. 숫자를 만나면 숫자를 스택에 푸시한다.
// 3. 연산자를 만나면 스택에서 팝을 두 번 하고, 두 개의 숫자를 가지고 연산한다.
// 4. 3의 연산 결과를 다시 스택에 푸시한다.
// 5. 문자열이 끝날 때 까지 반복한다.
// 6. 문자열이 끝나면 연산 결과 값을 리턴한다.
}
const result = calc("9 3 * 15 5 / + 2 -")
console.log(result);
A. 20
B. 28
C. 32
D. 34
E. 45
오답 선택 이유
답 풀이(optional)
1.숫자 9,3을 만나서 스택에 저장
2. 연산자 를 만나 93이 진행되고 스택에 27 저장
3. 숫자 15,5를 만나서 스택에 저장 // 현재 스택에 27, 15, 5 저장 중
4. 연산자 / 를 만나서 15/5를 진행되고 스택에 3 저장 // 현재 스택에 27, 3 저장 중
5. 연산자 + 를 만나서 27+3이 진행되고 스택에 30 저장 // 현재 스택에 30 저장 중
6. 숫자 2를 만나서 스택에 저장 // 현재 스택에 30, 2 저장 중
7. 연산자 - 를 만나서 30-2가 진행되어 스택에 28 저장
8. 문자열 검사가 끝나서 최종 연산결과인 28이 리턴된다.
B. 28
A 먼저 들어간게 먼저 나오는 First In First Out 구조이다.
B 먼저 들어간게 나중에 나오는 First In Last Out 구조이다.
C dequeue는 큐의 가장 앞에 있는 값을 꺼내서 반환한다.
D rear는 큐의 마지막 값의 인덱스를 가리킨다.
E 하노이의 탑의 구조는 큐와 유사하다
여기서 정답 1개만 선택하고 다른 걸 고르지 않았다.
B,E
A 참
B 거짓
A 참
A : 연결 리스트는 특정 인덱스의 노드를 찾을 때 배열보다 빠르다는 장점이 있다.
B : 단일 연결 리스트에서 각 노드는 자신의 이전 노드를 알 수 없다.
C : 연결 리스트는 반드시 리스트의 끝(tail)에만 노드를 추가해야 한다.
D : 배열보다 메모리를 더 효율적으로 사용할 수 있는 자료구조이다.
E : 이중 연결 리스트는 하나의 값을 저장하기 위해 2개의 노드가 필요하다.
B,D
A : 1
B : 2
C : 3
D : 4
E : 5
A
10번
(head) 1 - 2 - 3 - 4 - 5 - 6 (tail)
alternatePrint(head)의 결과로 적합한 것은?
function alternatePrint(node) {
if (node == null) {
return;
}
console.log(node.data);
if (node.next) {
alternatePrint(node.next.next);
}
console.log(node.data);
}
A : 1 - 3 - 5
B : 2 - 4 - 6
C : 2 - 4 - 6 - 6 - 4 - 2
D : 1 - 3 - 5 - 5 - 3 - 1
→ 콜스택 개념
E : 1 - 2 - 3 - 4 - 5 - 6
오답 선택 이유
답 풀이(optional)
최초 노드 1 이 찍힌 후, 1 밑에 next 값이 있으니 재귀로 들어간다. 이 때 값은 1의 다음다음 값인 '3'이 들어가게 되고, 3 또한 next를 갖고 있다. 재귀함수가 가져가는 그 값은 바로 '5'. 그래서 1-3-5 까지 나온 후, 더이상 들어갈 수 없으니 함수가 종료되고 갖고 있던 값을 다시 반환한다. 콜스택 개념이 적용 이다. 5-3-1 순으로 반환이 진행되고, 최종적으로 1-3-5-5-3-1이 결과값이 되는 원리이다.
D
A. 두 개 이상의 값에 하나의 키를 사용할 수 없다.
B. 키와 값을 한 쌍으로 저장할 수 있는 자료구조이다.
C. 해시 함수는 어떤 값이 들어오더라도 고유한 값으로 만들어 출력하기 때문에 입력 값과 출력 값을 1대1로 매핑할 수 있다.
D. 해시 테이블은 내부적으로 SHA-256 해시 함수를 사용한다.
E. 해시 함수를 통해 얻은 출력 값을 통해 입력을 생성할 수 있다.
→ 입력값을 알 수 없다.
A,B
A라는 해시 함수를 이용한다고 기재되어 있었는데 엉뚱한 생각을 하고 풀었다.(...) 하단 코드에 대한 오답 노트는 소스에다가 주석으로 풀이를 적었다.
function A(key) {
return key.length % 5; // → 마지막에 키의 길이가 동일한 값이 2번 들어와서 충돌이 생김.
}
const hashTable = new HashTable();
hashTable.insert("name", "kim") // 4
hashTable.insert("age", 22) // 3
hashTable.insert("height", 177) // 1
hashTable.insert("weight", 65) // 1 → height이 이미 쓰고 있음.
hashTable.insert("mobile", "010-9191-2929") // 1 → height이 이미 쓰고 있음.
2번 충돌