Algorithm - Mock Test

이소라·2022년 8월 5일
0

Algorithm

목록 보기
10/77
post-custom-banner

Mock Test 1

  • 코드 주인을 찾아라!
    • 디렉토리마다 코드 주인 정보는 JavaScript 객체로 주어짐
    • 객체는 1 이상 5 이하 깊이를 가지는 디렉토리 구조를 다룸
    • 하위 디렉토리를 가지지 않는 디렉토리들만 코드 주인을 가짐
      • 예) 아래 예시에서 services 폴더는 코드 주인 가지지 않음
    • 계산할 디렉토리는 폴더 구분자 /를 사용하는 문자열로 주어짐
      • 예) services/toss-cardservice 디렉토리 하위의 toss-card 디렉토리를 가리킴
    • 인자로 주어진 문자열은 코드 주인이 존재하는 디렉토리만 가리킴
      • 코드 주인이 없는 디렉토리에 대한 입력 없음
const codeOwnersMap = {
  "script": ["배수진"],
  "services": {
    "business-ledger": ["고찬균", "배수진"],
    "toss-card":["채주민", "유재섭"],
    "payments":["유재섭"],
  }
}
// 예시 실행 결과
solution(codeOwnersMap, 'script') // ['배수진']
solution(codeOwnersMap, 'services/business-ledger') // ['고찬균', '배수진']
solution(codeOwnersMap, 'services/payments') // ['유재섭']

Solution

/* 
 * `codeOwnersMap`과 `directory`를 입력받아
 * `directory`의 코드 주인 목록을 반환하는 함수를 작성하세요.
 */
function solution(codeOwnersMap, directory) {
    const separatorIndex = directory.indexOf('/');
    if (separatorIndex === -1) {
        return codeOwnersMap[directory];
    }
    const firstDir = directory.slice(0, separatorIndex);
    const restDirs = directory.slice(separatorIndex + 1);
    return solution(codeOwnersMap[firstDir], restDirs);
}



Mock Test 2 (서술형)

  • 프론트엔드 개발을 하다 보면 "Action-Reducer 패턴"에 대해 만나게 됨
    1. "Action-Reducer 패턴"이란 무엇인지 작성하기
    2. Action-Reducer 패턴의 장점에 대해 작성하기
    3. Action-Reducer 패턴을 이용하여 비지니스 문제를 해결한 경험 작성하기

My Answer

  • Action-Reducer 패턴은 데이터가 변하는 Action이 발생했을 때 Reducer 함수가 Action 타입에 따라서 dispatch를 다르게 실행시켜서 데이터를 업데이트 시키고, 업데이트된 데이터를 보여주는 패턴을 말합니다.
  • Action-Reducer 패턴을 사용하면 데이터의 흐름이 단방향이어서, 데이터를 저장하는 스토어와 데이터를 보여주는 뷰의 의존성이 약하다는 장점이 있습니다.
  • Aribnb 클론 코딩시 비동기 처리할 때 reducer함수를 사용했습니다. 비동기 처리 결과에 따라 다른 타입의 액션을 생성하여 그 액션에 대한 dispatch함수를 실행시켰습니다. 이렇게 했더니 reducer 함수의 반환값에 따라 비동기 처리를 기다리는 동안의 로딩 상태나 비동기 처리 결과를 바로 얻을 수 있어서 편리했습니다.

Revised Answer

  • 변화가 일어나면 Action(type에 대한 정보를 가진 객체)을 만들고 (각 액션에 맞게 미리 정의해둔) Reducer가 새로운 상태를 만들어서 store를 업데이트합니다. 그리고 store를 구독하고 있는 컴포넌트(View)에 상태변화가 적용됩니다.
  • 데이터 흐름이 단방향입니다. action을 dispatch할 때마다, history가 남아서 에러를 찾기 편하다고 합니다.
post-custom-banner

0개의 댓글