본문 바로가기
Algorithm/문제풀이

[Codility] FloodDepth (Medium) by javascript - Exercise 1

by 썸머워즈 2022. 6. 28.
반응형

▷ 문제 : Exercise 1 - FloodDepth (Medium)

 

FloodDepth coding task - Practice Coding - Codility

Find the maximum depth of water in mountains after a huge rainfall.

app.codility.com

▷ 해결 날짜 : 2022.06.28
▷ 소요 시간 : 1시간
▷ 풀이 과정 :

2015 Contest 문제 중에 하나인 FloodDepth 문제이다.

문제 콘셉트는 비가 많이 내린 뒤 최대 수심을 찾아내라는 콘셉트이다.

 

별다른 방법이 떠오르지 않아 그냥 하나씩 찾아가면서 값을 저장해두는 방향으로 잡고 풀어보았다.

가장 높은 곳의 기준이 되는 (high) 변수와 가장 낮은 곳의 기준이 되는 (row)를 선언해두고, 두 변수를 기준으로 그때그때 최대 수심을 저장해 값을 반환해주는 로직이다.

 

▷ 구현

function solution(A) {
  // impossible
  if (A.length <= 2) return 0;

  let [high, row, max, depth] = [0, 0, 0, 0];
  for (let i = 1; i < A.length; i++) {
    if (A[i] > A[high]) {
      depth = A[high] - A[row];
      high = row = i;
    } else if (A[i] > A[row]) {
      depth = A[i] - A[row];
    } else if (A[i] < A[row]) {
      row = i;
    }
    if (max < depth) max = depth;
  }
  return max;
}


▷ 복기 :

어떤 식으로 풀어야 하는지에 대해 고민이 풀리지 않아 생각보다 어렵게 느껴진 문제였다.

구현한 코드를 보면 그렇게까지 어려웠던 문제는 아녔을 텐데, 풀고 나서 다른 방법으로는 풀 수 없을까 하다가 관뒀다.

반응형


댓글

TOP