강의로 돌아가기
심명훈

어떻게 푸는지 잘 모르겠네요

가장 큰 값으로 기준을 잡았을 때 결과 값이 M과 같으면 기준을 반환하고
아니면
최대 최소값을 가지고 중간 값을 만든 다음 M과 비교해서 2번째로 큰 값을 반환하는 코드입니다.

작성중인 코드―solution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def solution(b,M):
    b.sort()
    mi=b[0]#최소값
    ma=b[-1]#최대값
    length=len(b)
    results=[]
    s=0
    for i in range(length):
        if ma == b[i]:
            s += b[i]*(length-i)
            break
        s += b[i]
    if s == M:
        return ma
    while (ma-mi)//2>0:
        mid = mi + (ma - mi) // 2
        s=0
        for i in range(length):
            if mid<=b[i]:
                s += mid * (length - i)
                break
            s+=b[i]
        results.append(mid)
        if s>M:
            ma=mid
        elif s<M:
            mi=mid

    return results[-2]
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.