본문 바로가기
프로그래밍

code kata (9/11)

by Youngbin Kwon 2020. 9. 12.

문제

 

인자인 height는 숫자로 이루어진 배열입니다.

그래프로 생각한다면 y축의 값이고, 높이 값을 갖고 있습니다.

아래의 그래프라면 height 배열은 [1, 8, 6, 2, 5, 4, 8, 3, 7] 입니다.

저 그래프에 물을 담는다고 생각하고,

물을 담을 수 있는 가장 넓은 면적의 값을 반환해주세요.

 

내 코드

function getMaxArea(height) {
  const areas = [];
  let thisArea;
  
  for (let i=0; i<height.length; i++) {
    for (let j=i+1; j<height.length; j++) {
      (height[i] < height[j]) ? thisArea = height[i] * (j-i) : thisArea = height[j] * (j-i);
      areas.push(thisArea);
    }
  }
  return Math.max(...areas);
}

1. 빈 배열과 for문을 돌며 구할 넓이 (thisArea)를 선언한다.

2. 중첩 for문을 선언한다. (이전의 그래프 막대와 다른 그래프 막대를 비교하기 위함이다)

3. 두 그래프 막대를 비교하여, 길이가 더 짧은 막대를 기준으로 넓이를 구한다. (짧은 막대의 값(높이) * 가로 길이 (j-i))

4. 구한 넓이를 배열에 넣는다.

5. 모든 막대를 한 번씩 돌면서 배열에 넣은 넓이 중에서 가장 큰 값을 구한다.

'프로그래밍' 카테고리의 다른 글

wecode +30 (9/16)  (0) 2020.09.16
wecode 세션 : 인증/인가와 로그인  (0) 2020.09.12
wecode +25 (9/11)  (0) 2020.09.11
[westagram] 인스타그램 클론 팀프로젝트 후기  (2) 2020.09.11
wecode +23 (9/9)  (0) 2020.09.10

댓글