PREP 접근 방법으로 알고리즘 풀기

boyeonJ·2023년 6월 20일
0

알고리즘

목록 보기
13/17

PREP란?

PREP은 알고리즘 문제를 풀기 위해 접근 방법을 구체화하고 계획을 세우는 과정을 의미합니다. PREP는 Problem, Requirements, Examples, Plan의 약어로 각각 다음과 같은 의미를 가지고 있습니다:

  1. Problem (문제 이해):

    • 문제의 요구사항과 제약조건을 이해합니다.
    • 주어진 입력과 출력의 형식, 범위, 제약사항 등을 파악합니다.
    • 문제를 자신의 언어로 정확하게 이해하는 단계입니다.
  2. Requirements (요구사항 분석):

    • 문제에서 해결해야 할 주요 요구사항을 식별합니다.
    • 주어진 입력에 따라 어떤 결과를 반환해야 하는지 파악합니다.
    • 문제를 해결하기 위해 필요한 추가적인 정보나 조건을 정리합니다.
  3. Examples (예시 분석):

    • 주어진 예시를 통해 문제를 더 잘 이해하고 예상되는 동작을 분석합니다.
    • 예시를 사용하여 문제의 입력과 출력 사이의 관계를 이해합니다.
    • 주어진 예시를 기반으로 알고리즘의 정확성을 검증하고 테스트 케이스를 만듭니다.
  4. Plan (계획 수립):

    • 문제를 해결하기 위한 알고리즘 또는 접근 방법을 고민합니다.
    • 입력에 대한 처리 방법, 반복문, 조건문, 재귀 등의 로직을 고민합니다.
    • 시간 복잡도와 공간 복잡도를 고려하여 효율적인 알고리즘을 선택하고 구체화합니다.

PREP 과정을 거치면 문제를 더 명확하게 이해하고 문제 해결에 필요한 알고리즘을 설계하는 데 도움이 됩니다. 이 단계를 거치면 문제 해결에 효율적이고 체계적인 접근 방법을 구축할 수 있습니다.


예시

PREP 접근 방법을 실제 문제에 적용하여 예시를 들어보겠습니다. 아래 문제를 예시로 사용하겠습니다.

문제: 배열에서 가장 큰 수 찾기
주어진 정수 배열에서 가장 큰 수를 찾아 반환하는 함수를 구현하세요.

  1. Problem (문제 이해):

    • 주어진 정수 배열에서 가장 큰 수를 찾는 문제입니다.
    • 배열의 길이나 요소들의 범위에 대한 제약사항은 문제에서 명시되어 있지 않습니다.
  2. Requirements (요구사항 분석):

    • 주어진 정수 배열에서 가장 큰 수를 찾아야 합니다.
    • 입력으로 주어지는 배열의 길이나 요소들의 범위에 대한 추가적인 요구사항은 없습니다.
  3. Examples (예시 분석):

    • 예시 1: [1, 3, 2, 9, 5] → 가장 큰 수는 9입니다.
    • 예시 2: [-1, -5, -2, -9, -3] → 가장 큰 수는 -1입니다.
  4. Plan (계획 수립):

    • 입력으로 주어진 배열의 첫 번째 요소를 가장 큰 수로 초기화합니다.
    • 배열의 각 요소를 순회하면서 현재까지의 가장 큰 수보다 큰 수를 발견하면 해당 수로 가장 큰 수를 업데이트합니다.
    • 모든 요소를 순회한 뒤 가장 큰 수를 반환합니다.

다음은 PREP 접근 방법을 적용한 구현 예시입니다:

const findMaxNumber = (arr) => {
  let max = arr[0]; // 가장 큰 수 초기화

  for (let i = 1; i < arr.length; i++) {
    if (arr[i] > max) {
      max = arr[i]; // 현재까지의 가장 큰 수보다 큰 수를 발견하면 업데이트
    }
  }

  return max;
};

console.log(findMaxNumber([1, 3, 2, 9, 5])); // 출력: 9
console.log(findMaxNumber([-1, -5, -2, -9, -3])); // 출력: -1

위 예시에서는 주어진 배열에서 가장 큰 수를 찾는 함수를 구현했습니다. PREP 접근 방법을 활용하여 문제를 이해하고 요구사항을 분석한 후, 예시를 통해 문제의 입력과 출력 관계를 파악하고 최종적으로 함수를 구현했습니다.

0개의 댓글