반응형
실전 모의고사
코딩 테스트를 잘 준비하기 위해서는 실제 코딩 테스트 환경과 유사한 조건에서 문제를 풀어보는 것이 중요합니다. 이번 글에서는 제한 시간 내에 문제를 해결하는 방법을 연습합니다. 아래 예제 문제들을 제한 시간 내에 풀어보세요.
문제 1: 두 수의 합
주어진 배열에서 두 수를 더해 특정 숫자가 되는 두 수의 인덱스를 찾으세요.
JavaScript
function twoSum(nums, target) {
const map = new Map();
for (let i = 0; i < nums.length; i++) {
const complement = target - nums[i];
if (map.has(complement)) {
return [map.get(complement), i];
}
map.set(nums[i], i);
}
return null;
}
console.log(twoSum([2, 7, 11, 15], 9)); // [0, 1]
Python
def two_sum(nums, target):
num_map = {}
for i, num in enumerate(nums):
complement = target - num
if complement in num_map:
return [num_map[complement], i]
num_map[num] = i
return None
print(two_sum([2, 7, 11, 15], 9)) # [0, 1]
문제 2: 가장 긴 증가하는 부분 수열 (LIS)
주어진 배열에서 가장 긴 증가하는 부분 수열의 길이를 구하세요.
JavaScript
function lengthOfLIS(nums) {
if (nums.length === 0) return 0;
const dp = new Array(nums.length).fill(1);
for (let i = 1; i < nums.length; i++) {
for (let j = 0; j < i; j++) {
if (nums[i] > nums[j]) {
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
}
return Math.max(...dp);
}
console.log(lengthOfLIS([10, 9, 2, 5, 3, 7, 101, 18])); // 4
Python
def length_of_lis(nums):
if not nums:
return 0
dp = [1] * len(nums)
for i in range(1, len(nums)):
for j in range(i):
if nums[i] > nums[j]:
dp[i] = max(dp[i], dp[j] + 1)
return max(dp)
print(length_of_lis([10, 9, 2, 5, 3, 7, 101, 18])) # 4
문제 3: 유효한 괄호
주어진 문자열이 유효한 괄호인지 확인하세요. 괄호는 '(', ')', '{', '}', '[', ']' 만 포함됩니다.
JavaScript
function isValid(s) {
const stack = [];
const map = {
'(': ')',
'{': '}',
'[': ']'
};
for (let char of s) {
if (map[char]) {
stack.push(map[char]);
} else if (stack.length > 0 && stack[stack.length - 1] === char) {
stack.pop();
} else {
return false;
}
}
return stack.length === 0;
}
console.log(isValid("()")); // true
console.log(isValid("()[]{}")); // true
console.log(isValid("(]")); // false
Python
def is_valid(s):
stack = []
mapping = {')': '(', '}': '{', ']': '['}
for char in s:
if char in mapping:
top_element = stack.pop() if stack else '#'
if mapping[char] != top_element:
return False
else:
stack.append(char)
return not stack
print(is_valid("()")) # True
print(is_valid("()[]{}")) # True
print(is_valid("(]")) # False
문제 4: 이진 트리의 최대 깊이
주어진 이진 트리의 최대 깊이를 구하세요.
JavaScript
class TreeNode {
constructor(val, left = null, right = null) {
this.val = val;
this.left = left;
this.right = right;
}
}
function maxDepth(root) {
if (!root) return 0;
return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
}
const root = new TreeNode(3, new TreeNode(9), new TreeNode(20, new TreeNode(15), new TreeNode(7)));
console.log(maxDepth(root)); // 3
Python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def max_depth(root):
if not root:
return 0
return max(max_depth(root.left), max_depth(root.right)) + 1
root = TreeNode(3, TreeNode(9), TreeNode(20, TreeNode(15), TreeNode(7)))
print(max_depth(root)) # 3
결론
이번 글에서는 제한 시간 내에 문제를 해결하는 실전 모의고사를 통해 코딩 테스트를 준비했습니다. 실제 테스트 환경과 유사한 조건에서 연습해보며, 시간 관리와 문제 해결 능력을 향상시킬 수 있습니다. 다음 글에서는 모의 면접과 코드 리뷰에 대해 알아보겠습니다.
다음 글에서 만나요!
반응형
'코딩테스트1' 카테고리의 다른 글
[코딩 테스트] 26일차: 실전 모의고사 후 피드백 받기 (1) | 2024.09.26 |
---|---|
[코딩 테스트] 25일차: 실전 모의고사 - 모의 면접과 코드 리뷰 (0) | 2024.09.25 |
[코딩 테스트] 23일차: 문제 풀이 전략과 팁 (0) | 2024.09.23 |
[코딩 테스트] 22일차: 수학 문제 (0) | 2024.09.22 |
[코딩 테스트] 21일차: 그리디 알고리즘 문제 (2) | 2024.09.21 |