TIL-55. [코딩테스트] 히스토그램 영역

solarrrrr·2022년 2월 3일
0

Today I Learned

목록 보기
55/74
post-thumbnail

기업 코테에 히스토그램 영역 구하는 문제가 나왔다.
예전에 물을 담을 수 있는 넓은 면적을 구하는 코테 관련 문제를 풀어봐서
비슷하게 접근하면 된다 생각했는데 시간에 쫓겨 그런지 생각보다 안 풀렸다.
결국 못 풀고 비루한 답안을 제출했는데.

일이 있어서 마치고 들어오는 길에 이 문제를 다시 곰곰이 생각해 보니
생각보다 간단했다.

효율적인 접근 방법은 아닐 수 있는데 일단 떠오른 생각은
이중 for문을 이용해서 첫 번째 막대를 기준으로
다음 인덱스, 그 다음 인덱스 이런 식으로 넓이를 구해 리스트에 담는다.
높이는 가장 낮은 막대 기준이 될 테니 별도 리스트에 넣어서
min() 함수를 통해 가장 작은 값을 찾는 식으로 했다.

주어진 arr 요소 마지막까지 다 돈 후 만들어진 리스트에서
가장 큰 값을 리턴하도록 하면 끝.
리스트에는 각 요소 위치별 넓이값이 들어가 있으니까
max() 함수를 통해 나온 값이 가장 넓은 면적이다.

def HistogramArea(arr):
  d_list = []
  for n in range(len(arr)):
    min_chk = []
    min_chk = [arr[n]]
    
    for i in range((n+1),len(arr)):
      min_chk.append(arr[i])
      h = min(min_chk)
      w = len(min_chk)
      d_list.append(h * w)
      
  return print(max(d_list))

HistogramArea([7, 2, 1, 4, 5, 1, 3, 3])

어렵지 않은 문제였는데 못 풀어서 정말 아쉬웠다.

profile
몰입

0개의 댓글