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

[코딩 테스트] 30일차: 실전 모의고사 - 최종 준비

by cogito21_js 2024. 9. 30.
반응형

최종 준비와 종합 정리

이번 글에서는 코딩 테스트 준비를 마무리하는 단계로, 그동안 배운 내용을 종합 정리하고 최종 준비를 진행하겠습니다. 코딩 테스트 당일의 긴장을 풀고 최상의 상태로 시험에 임할 수 있도록 몇 가지 팁을 제공하겠습니다.

1. 학습 내용 종합 정리

지금까지 배운 자료구조와 알고리즘을 한 번 더 정리합니다.

  • 자료구조: 배열, 리스트, 스택, 큐, 트리, 그래프, 해시맵 등
  • 알고리즘: 정렬, 탐색, 그리디 알고리즘, 동적 프로그래밍, 분할 정복, 백트래킹 등

2. 최종 준비 팁

  1. 시간 관리: 문제를 풀 때 시간을 효율적으로 관리하는 연습을 합니다.
  2. 문제 이해: 문제를 꼼꼼히 읽고, 요구사항을 정확히 이해합니다.
  3. 단계별 접근: 문제를 더 작은 부분 문제로 나누어 단계별로 해결합니다.
  4. 테스트 케이스 작성: 다양한 입력에 대해 코드가 제대로 동작하는지 확인하기 위해 테스트 케이스를 작성합니다.
  5. 디버깅: 코드를 작성한 후, 디버깅을 통해 예상치 못한 오류를 찾아 수정합니다.

연습 문제

문제 1: 두 수의 합 II (Two Sum II)

주어진 배열에서 두 수의 합이 특정 숫자가 되는 두 수의 인덱스를 찾으세요. 단, 배열은 정렬되어 있으며, 1부터 시작하는 인덱스를 반환해야 합니다.

예제

  • 입력: [2, 7, 11, 15], 9
  • 출력: [1, 2]

JavaScript

function twoSum(numbers, target) {
  let left = 0;
  let right = numbers.length - 1;

  while (left < right) {
    const sum = numbers[left] + numbers[right];
    if (sum === target) {
      return [left + 1, right + 1];
    } else if (sum < target) {
      left++;
    } else {
      right--;
    }
  }

  return null;
}

console.log(twoSum([2, 7, 11, 15], 9)); // [1, 2]

Python

def two_sum(numbers, target):
    left, right = 0, len(numbers) - 1

    while left < right:
        sum = numbers[left] + numbers[right]
        if sum == target:
            return [left + 1, right + 1]
        elif sum < target:
            left += 1
        else:
            right -= 1

    return None

print(two_sum([2, 7, 11, 15], 9)) # [1, 2]

문제 2: 주식을 사고팔기 가장 좋은 시점 II

주어진 배열에서 주식을 여러 번 사고팔아 얻을 수 있는 최대 이익을 계산하세요. 각 원소는 날마다의 주식 가격입니다.

예제

  • 입력: [7, 1, 5, 3, 6, 4]
  • 출력: 7 (1일에 사고 3일에 팔기, 다시 3일에 사고 5일에 팔기)

JavaScript

function maxProfit(prices) {
  let maxProfit = 0;
  for (let i = 1; i < prices.length; i++) {
    if (prices[i] > prices[i - 1]) {
      maxProfit += prices[i] - prices[i - 1];
    }
  }
  return maxProfit;
}

console.log(maxProfit([7, 1, 5, 3, 6, 4])); // 7
console.log(maxProfit([1, 2, 3, 4, 5])); // 4

Python

def max_profit(prices):
    max_profit = 0
    for i in range(1, len(prices)):
        if prices[i] > prices[i - 1]:
            max_profit += prices[i] - prices[i - 1]
    return max_profit

print(max_profit([7, 1, 5, 3, 6, 4])) # 7
print(max_profit([1, 2, 3, 4, 5])) # 4

문제 3: 중복된 문자 제거

주어진 문자열에서 중복된 문자를 제거하고, 남은 문자들을 반환하세요.

예제

  • 입력: "aabbcc"
  • 출력: "abc"

JavaScript

function removeDuplicates(s) {
  return [...new Set(s)].join('');
}

console.log(removeDuplicates("aabbcc")); // "abc"
console.log(removeDuplicates("abcd")); // "abcd"

Python

def remove_duplicates(s):
    return ''.join(sorted(set(s), key=s.index))

print(remove_duplicates("aabbcc")) # "abc"
print(remove_duplicates("abcd")) # "abcd"

문제 4: 배열의 중복된 원소 제거

주어진 배열에서 중복된 원소를 제거하고, 남은 원소들을 반환하세요.

예제

  • 입력: [1, 1, 2, 3, 4, 4, 5]
  • 출력: [1, 2, 3, 4, 5]

JavaScript

function removeDuplicates(arr) {
  return [...new Set(arr)];
}

console.log(removeDuplicates([1, 1, 2, 3, 4, 4, 5])); // [1, 2, 3, 4, 5]

Python

def remove_duplicates(arr):
    return list(set(arr))

print(remove_duplicates([1, 1, 2, 3, 4, 4, 5])) # [1, 2, 3, 4, 5]

결론

이번 글에서는 실전 모의고사에 대한 최종 준비와 종합 정리를 진행했습니다. 그동안 배운 내용을 종합하여 복습하고, 최종적으로 정리하는 과정을 통해 자신감을 가지고 코딩 테스트에 임할 수 있습니다.

모든 준비가 끝났습니다. 최선을 다해 코딩 테스트에 응시하시기 바랍니다!

성공적인 코딩 테스트가 되기를 바랍니다!

 

반응형