본문 바로가기
코딩테스트1

[코딩 테스트] 26일차: 실전 모의고사 후 피드백 받기

by cogito21_js 2024. 9. 26.
반응형

실전 모의고사 후 피드백 받기

코딩 테스트를 준비하는 과정에서 중요한 부분은 테스트 후 피드백을 통해 개선점을 찾고 보완하는 것입니다. 이번 글에서는 실전 모의고사 후 피드백을 받는 방법과 피드백을 반영하는 과정을 다루겠습니다.

1. 테스트 후 피드백 받기

테스트가 끝난 후에는 자신의 풀이를 돌아보고, 피드백을 받는 것이 중요합니다.

  1. 자신의 풀이 분석: 제출한 코드를 다시 검토하고, 어떤 부분에서 실수했는지, 더 효율적인 방법은 없는지 분석합니다.
  2. 코드 리뷰 요청: 친구나 동료, 또는 온라인 커뮤니티에서 코드 리뷰를 요청하여 피드백을 받습니다.
  3. 피드백 수용: 받은 피드백을 바탕으로, 자신의 코드에서 개선할 점을 찾고 반영합니다.

2. 개선점 찾기

피드백을 통해 찾은 개선점을 반영하여 더 나은 코드를 작성합니다.

  1. 효율성 개선: 시간 복잡도와 공간 복잡도를 분석하여, 더 효율적인 알고리즘으로 개선합니다.
  2. 코드 가독성 향상: 변수명, 함수명 등을 의미 있게 수정하고, 코드 구조를 개선하여 가독성을 높입니다.
  3. 에러 처리 강화: 엣지 케이스와 예외 상황을 고려하여, 더 견고한 코드를 작성합니다.

3. 피드백 반영 예제

피드백을 반영하여 개선된 코드를 작성하는 예제를 살펴보겠습니다.

 

문제: 두 수의 합 (Two Sum)

주어진 배열에서 두 수를 더해 특정 숫자가 되는 두 수의 인덱스를 찾는 문제입니다.

피드백 전 코드 (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]

피드백 후 개선된 코드 (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);
  }
  throw new Error("No two sum solution");
}

try {
  console.log(twoSum([2, 7, 11, 15], 9)); // [0, 1]
} catch (e) {
  console.error(e.message);
}

피드백 전 코드 (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]

피드백 후 개선된 코드 (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
    raise ValueError("No two sum solution")

try:
    print(two_sum([2, 7, 11, 15], 9)) # [0, 1]
except ValueError as e:
    print(e)

연습 문제

문제 1: 주어진 문자열이 회문인지 확인하기

주어진 문자열이 앞뒤가 똑같은 회문인지 확인하는 프로그램을 작성하세요.

JavaScript

function isPalindrome(s) {
  s = s.replace(/[^A-Za-z0-9]/g, '').toLowerCase();
  let left = 0, right = s.length - 1;
  while (left < right) {
    if (s[left] !== s[right]) {
      return false;
    }
    left++;
    right--;
  }
  return true;
}

console.log(isPalindrome("A man, a plan, a canal: Panama")); // true
console.log(isPalindrome("race a car")); // false

Python

def is_palindrome(s):
    s = ''.join(filter(str.isalnum, s)).lower()
    left, right = 0, len(s) - 1
    while left < right:
        if s[left] != s[right]:
            return False
        left += 1
        right -= 1
    return True

print(is_palindrome("A man, a plan, a canal: Panama")) # True
print(is_palindrome("race a car")) # False

문제 2: 두 정렬된 배열의 중간 값 찾기

두 정렬된 배열이 주어질 때, 두 배열을 합쳤을 때의 중간 값을 구하는 프로그램을 작성하세요.

JavaScript

function findMedianSortedArrays(nums1, nums2) {
  const nums = [...nums1, ...nums2].sort((a, b) => a - b);
  const len = nums.length;
  if (len % 2 === 0) {
    return (nums[len / 2 - 1] + nums[len / 2]) / 2;
  } else {
    return nums[Math.floor(len / 2)];
  }
}

console.log(findMedianSortedArrays([1, 3], [2])); // 2.0
console.log(findMedianSortedArrays([1, 2], [3, 4])); // 2.5

Python

def find_median_sorted_arrays(nums1, nums2):
    nums = sorted(nums1 + nums2)
    len_nums = len(nums)
    if len_nums % 2 == 0:
        return (nums[len_nums // 2 - 1] + nums[len_nums // 2]) / 2
    else:
        return nums[len_nums // 2]

print(find_median_sorted_arrays([1, 3], [2])) # 2.0
print(find_median_sorted_arrays([1, 2], [3, 4])) # 2.5

결론

이번 글에서는 실전 모의고사 후 피드백을 받고 개선하는 방법에 대해 배웠습니다. 자신의 코드를 돌아보고, 피드백을 통해 개선점을 찾는 과정은 코딩 테스트 준비에 매우 중요합니다. 다음 글에서는 실전 모의고사에 대한 종합 리뷰와 최종 준비 팁을 다루겠습니다.

다음 글에서 만나요!

 

반응형