hugDog
Android DevLog
hugDog
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ™Œ Hello? (162)
    • ๐Ÿงฉ์•ˆ๋“œ๋กœ์ด๋“œ (12)
      • ๊ฐœ๋… ์ •๋ฆฌ (5)
      • ๋ฒ„๊ทธ ํ•ด๊ฒฐ (4)
      • ๊ธฐํƒ€ (3)
    • ๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜ (54)
      • ๊ฐœ๋… (0)
      • ๋ฐฑ์ค€ (48)
      • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (6)
    • ๐Ÿ“„๊ฐœ๋ฐœ ์ผ์ง€ (0)
      • FINPO (0)
    • ๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (71)
      • C++ ์ •๋ฆฌ (49)
      • C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค ์—ฐ์Šต๋ฌธ์ œ (20)
      • Kotlin (2)
    • โญProject (1)
    • ๐ŸšดTIL (13)
      • Clean Code (13)
    • ๐Ÿšฉ๊ธฐํƒ€ (9)
      • ๋ชฉํ‘œ (6)
      • ์ผ์ƒ (3)
      • ๋ฌธ์„œ (0)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
hugDog
๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 1654๋ฒˆ: ๋žœ์„  ์ž๋ฅด๊ธฐ [์ด์ง„ ํƒ์ƒ‰]

๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 1654๋ฒˆ: ๋žœ์„  ์ž๋ฅด๊ธฐ [์ด์ง„ ํƒ์ƒ‰]

2021. 2. 15. 13:57
728x90

๋‚ด ์ฝ”๋“œ

def find(lans, n,h,m):
    high = h
    min = m
    mid = (high + min)//2

    while min <= high:
        sum = 0
        for lan in lans:
            sum += lan//mid

        if sum >= n:
            min = mid + 1
        elif sum < n:
            high = mid - 1
    

        mid = (high + min)//2
    
    return mid


from sys import stdin
k, n = map(int,stdin.readline().split())
lans = []


for i in range(k):
    lans.append(int(input()))

high = max(lans)
min = 1

mid1 = find(lans,n,high,min)

print(mid1)

 

 

 

์ฒ˜์Œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

k,n = map(int,input().split())
lans = []

for i in range(k):
    lans.append(int(input()))

max = 1
sum = [0]

while True:
    sum.append(0)
    for lan in lans:
        sum[max] += (lan//max)
    if sum[max] == 0:
        break
    max += 1

a = 0


for i in range(max):
    if (a < i) & (sum[i] >= n):
        a = i

print(a)

์ „์ˆ˜ ์กฐ์‚ฌ๋กœ ํ’€์–ด๋ณด๋ ค ํ–ˆ์ง€๋งŒ... ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋˜๋Š” ์ด์œ ๋ฅผ ์—„์ฒญ ํ—ค๋งค๊ณ , ์ฝ”๋“œ ์ˆ˜์ •๋„ ๋งŽ์ด ํ•ด๋ดค์ง€๋งŒ ํ•ด๊ฒฐ์ด ๋˜์ง€ ์•Š์•„ ๊ฒฐ๊ตญ ๊ตฌ๊ธ€๋ง ํ–ˆ๋‹ค.

๋ฐฉ๋ฒ•์€ ์ด์ง„ ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

 

 

์ด์ง„ ํƒ์ƒ‰ ์ฝ”๋“œ

k,n = map(int,input().split())

lans = []

for i in range(k):
    lans.append(int(input()))

mid = max(lans)//2
high = max(lans)
min = 0

while True:
    sum = 0
    for lan in lans:
        sum += lan//mid

    if n == sum:
        break
    elif sum > n:
        min = mid + 1
        mid = (high + min)//2
    else:
        high = mid - 1
        mid = (high + min)//2
    
    if min > high:
        n += 1
        mid = max(lans)//2
        high = max(lans)
        min = 0
        
print(mid - 1)

 

๋ถ„๋ช… ์ด์ง„ ํƒ์ƒ‰์„ ํ†ตํ•ด ์‹œ๊ฐ„์ดˆ๊ณผ๋Š” ํ•ด๊ฒฐํ–ˆ์œผ๋‚˜.. ์ด์ง„ํƒ์ƒ‰์„ ํ†ตํ•ด ๋‚˜์˜ค๋Š” ๊ฒฐ๊ด๊ฐ’์ด ์ตœ๋Œ“๊ฐ’์ด ์•„๋‹ˆ์—ˆ๋‹ค.

์ตœ๋Œ“๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์œผ๋‚˜..

 

k,n = map(int,input().split())

lans = []
lansum = 0

for i in range(k):
    lans.append(int(input()))

mid = max(lans)//2
high = max(lans)
min = 0

while True:
    sum = 0
    for lan in lans:
        sum += lan//mid

    if n == sum:
        break
    elif sum > n:
        min = mid + 1
        mid = (high + min)//2
    else:
        high = mid - 1
        mid = (high + min)//2
    
    if min > high:
        n += 1
        mid = max(lans)//2
        high = max(lans)
        min = 0


while True:
    sum = 0
    for lan in lans:
        sum += lan//mid

    if n == sum:
        mid += 1
    else:
        break
        
    
print(mid - 1)

 

๋˜๋‹ค์‹œ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐœ์ƒ... ๋‹ค์‹œ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์งœ๋ฉด์„œ ์—„์ฒญ๋‚œ ์‚ฝ์งˆ์„ ํ•œ ๊ฒฐ๊ณผ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋”๋Ÿฌ์šด ์ฝ”๋“œ๊ฐ€ ํƒ„์ƒํ–ˆ๋‹ค..

 

def find(lans, n,h,m,l):
    low = l
    high = h
    min = m
    mid = (high + min)//2

    while True:
        sum = 0
        for lan in lans:
            sum += lan//mid

        if sum == n:
            break
        elif sum > n:
            min = mid + 1
        elif sum < n:
            high = mid - 1
    
        if min > high:
            if low == False:
                n += 1
            else:
                n -= 1
            high = h
            min = m
        mid = (high + min)//2
    
    return mid,n


k,n = map(int,input().split())


lans = []

for i in range(k):
    lans.append(int(input()))

if k == n:
    print(lans[0])
    exit(0)

high = max(lans)
min = 0


mid1,n1 = find(lans,n,high,min,False)
mid2,n2 = find(lans,n-1,high,min,True)
    
while True:
    mid3,n3 = find(lans,n,mid2,mid1,False)
    if mid1 == mid3:
        break
    if n3 == n1:
        mid1 = mid3

print(mid1)

 

๋ฌผ๋ก  ์ด ์ฝ”๋“œ๋กœ๋„ ์‹œ๊ฐ„์ดˆ๊ณผ ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ์ด ๋˜์ง€ ์•Š์•˜๊ณ .. ๊ฒฐ๊ตญ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค.

 

 

์ด ๋ฌธ์ œ๋ฅผ ํ’€๋ฉฐ ์–ป์€ ๊ตํ›ˆ์€..

3์‹œ๊ฐ„ ์ด์ƒ ํˆฌ์žํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์•ˆ ํ’€๋ฆฌ๋ฉด ํ•˜๋ฃจ ๊ฐ„๊ฒฉ์„ ๋‘๊ณ  ํ’€์–ด๋ณด๊ณ ,

์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•ด์ง„๋‹ค๊ณ  ๋А๋ผ๋ฉด ๋‹ค์‹œ ์ƒ๊ฐํ•ด์•ผ๊ฒ ๋‹ค.

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ (์ƒˆ์ฐฝ์—ด๋ฆผ)
    '๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 14938๋ฒˆ: ์„œ๊ฐ•๊ทธ๋ผ์šด๋“œ
    • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 11444๋ฒˆ: ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ 6
    • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 9251๋ฒˆ: LCS
    • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 1157๋ฒˆ: ๋‹จ์–ด ๊ณต๋ถ€
    hugDog
    hugDog
    ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต๋ถ€ ์ค‘์ธ ํ•™์ƒ์ž…๋‹ˆ๋‹ค!

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

    ๊ฐœ์ธ์ •๋ณด

    • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
    • ํฌ๋Ÿผ
    • ๋กœ๊ทธ์ธ

    ๋‹จ์ถ•ํ‚ค

    ๋‚ด ๋ธ”๋กœ๊ทธ

    ๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
    Q
    Q
    ์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
    W
    W

    ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

    ๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
    E
    E
    ๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
    C
    C

    ๋ชจ๋“  ์˜์—ญ

    ์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
    S
    S
    ๋งจ ์œ„๋กœ ์ด๋™
    T
    T
    ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
    H
    H
    ๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
    Shift + /
    โ‡ง + /

    * ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.