[CodeKata] Week2 - Day4,5

byhazy·2021년 7월 4일
1

algorithm 풀이

목록 보기
40/44

📌 CodeKata - Week2, Day4

문제

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

가장 자주 등장한 숫자를 k 개수만큼 return 해주세요.

nums = [1,1,1,2,2,3],
k = 2

return [1,2]

nums = [1]
k = 1

return [1]

풀이1

def top_k(nums, k):
    dic = {}
    for i in nums:
        if i not in dic:
            dic[i] = 1
        else:
            dic[i] = dic[i] + 1
    sorted_dic = sorted(dic, key= lambda x : dic[x], reverse=True) #value 값 기준으로 key값 리스트 반환
    return sorted_dic[0:k]

풀이2

def top_k(nums, k):
    dic = {}
    arr = []
    for i in nums:
        if i not in dic:
            dic[i] = 1
        else:
            dic[i] = dic[i] + 1

    for i in range(k):
      a =  max(dic, key=(lambda x: dic[x]))
      arr.append(a)
      del dic[a]
    return arr

📌 CodeKata - Week2, Day5

문제

인자인 height는 숫자로 이루어진 배열입니다.그래프로 생각한다면 y축의 값이고,
높이 값을 갖고 있습니다.

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

저 그래프에 물을 담는다고 생각하고, 물을 담을 수 있는 가장 넓은 면적의 값을 반환해주세요.

  • 가정
    배열의 길이는 2이상입니다.

풀이

def get_max_area(height):
    arr  = []

    for i in range(len(height)-1):
        for j in range(i+1, len(height)):
            if height[i] > height[j]:
                arr.append(height[j]*(j-i))
            else:
                arr.append(height[i]*(j-i))
        
    return max(arr)

0개의 댓글