์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€ | ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค | ์†Œํ”„ํ‹ฐ์–ด

[ํŒŒ์ด์ฌ] 1072๋ฒˆ: ๊ฒŒ์ž„ / ๋ธŒ๋ฃจํŠธํฌ์Šค ์ด๋ถ„ํƒ์ƒ‰

์ธํฌ๋งˆํ‹ฑ 2024. 10. 28. 22:52


 

1. ๋ฐฑ์ค€ 1072๋ฒˆ ๊ฒŒ์ž„

https://www.acmicpc.net/problem/1072

 

 

2. ์˜ค๋Š˜์˜ ํšŒ๊ณ 

* ์ •๋‹ต์€ ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒซ๋ฒˆ์งธ ์ ‘๊ทผ: ๋‹จ์ˆœ ๊ตฌํ˜„ ์‹œ๊ฐ„์ดˆ๊ณผ

ํŒŒ์ด์ฌ ์†Œ์ˆ˜์  ํ•จ์ˆ˜

๋ฐ˜์˜ฌ๋ฆผ num = f " {num: .2f} " ์†Œ์ˆ˜์  3์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ 2์ž๋ฆฌ๊นŒ์ง€ ์ถœ๋ ฅ

๋ฒ„๋ฆผ math.floor(num)

์˜ฌ๋ฆผ math.ceil(num)

 

import math
x,y = map(int, input().split()) 
z = (y/x)*100
z = math.floor(z)
i = 1
if x<=y:
    print(-1)
else:
    if y==0:
        while True:
            z1 = ((y+i)/(x+i))*100
            z1 = math.floor(z1)
            if z1>=1:
                print(i)
                break
            else:
                i = i+1
    else:
        while True:
            z1 = ((y+i)/(x+i))*100
            z1 = math.floor(z1)
            if z1 > z:
                print(i)
                break
            else:
                i = i+1

 

 

๋‘๋ฒˆ์งธ ์ ‘๊ทผ: ์ด๋ถ„ํƒ์ƒ‰ ์„ฑ๊ณต

 

x์˜ ๋ฒ”์œ„๊ฐ€ 10์–ต์ธ ๊ฒƒ์„ ๋ณด๊ณ  ํƒ์ƒ‰๋ฒ”์œ„๋ฅผ ์ขํ˜€์•ผ ํ•œ๋‹ค๋Š” ์ƒ๊ฐ์ด ํ•„์š”ํ•˜๋‹ค.

์–ผ๋งˆ๋ฅผ ๋”ํ• ์ง€ 1๋ถ€ํ„ฐ ๋Š˜๋ ค๊ฐ€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด๋ถ„ํƒ์ƒ‰์„ ์ด์šฉํ•ด mid๋ฅผ ์„ค์ • ํ›„ ๋ฒ”์œ„๋ฅผ ์ขํ˜€๊ฐ€์•ผ ํ•œ๋‹ค.

 

* math.floor๋ฅผ ์‚ฌ์šฉํ•ด ์†Œ์ˆ˜์  ๋ฒ„๋ฆฌ๊ธฐ

z = (y / x) * 100

z = math.floor(z)

 

* ์ •์ˆ˜ ๋‚˜๋ˆ—์…ˆ์„ ์‚ฌ์šฉํ•ด ์†Œ์ˆ˜์  ๋ฒ„๋ฆฌ๊ธฐ(๋‹น์—ฐํ•œ ๊ฒƒ์ด์˜€์Œ)

z = (y * 100) // x

 

import math
x,y = map(int, input().split())
z = (y * 100) // x
z = math.floor(z)
i = 0
if z>=99:
    print(-1)
else:
    low, high = 1, 1000000000
    while low<=high:
        mid = (low + high) // 2
        z1 = ((y + mid) * 100) // (x + mid)
        z1 = math.floor(z1)

        if z1 > z:
            i = mid
            high = mid-1
        else:
            low = mid+1
    print(i)

 

์ด๋ถ„ํƒ์ƒ‰์„ ํ†ตํ•ด mid์˜ ๊ฐ’์„ ์ขํ˜€๊ฐ€๊ณ  z1 (mid๊ฐ’์„ ๋”ํ•œ ์ƒˆ๋กœ์šด ํ™•๋ฅ ) ๊ฐ’์ด z (์›๋ž˜ ํ™•๋ฅ ) ๋ณด๋‹ค ์ปค์ง€๋ฉด i ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ low ๊ฐ’์ด high ๊ฐ’๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ์ปค์งˆ ๊ฒฝ์šฐ while ๋ฌธ์„ ๋น ์ ธ๋‚˜์˜จ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ while๋ฌธ์„ ๋น ์ ธ๋‚˜์˜ฌ ๋•Œ ์ €์žฅ๋œ i ๊ฐ’์ด ์ตœ์†Œ ๊ฐ’ ( =  ์ตœ์†Œ ๋ช‡ ํŒ ๋” ํ•ด์•ผํ•˜๋Š”์ง€) ์ด ๋œ๋‹ค.