[BOJ][๐ก4][๋ฐฑ์ค#01027] ๊ณ ์ธต ๊ฑด๋ฌผ
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold IV
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
์ธ์ค์์๋ ๊ณ ์ธต ๋น๋ฉ์ด ๋ง๋ค. ์ธ์ค์์ ์๋ฏผ ๊น์ง๋ฏผ์ ๊ฐ์ฅ ๋ง์ ๊ณ ์ธต ๋น๋ฉ์ด ๋ณด์ด๋ ๊ณ ์ธต ๋น๋ฉ์ ์ฐพ์ผ๋ ค๊ณ ํ๋ค. ๋น๋ฉ์ ์ด N๊ฐ๊ฐ ์๋๋ฐ, ๋น๋ฉ์ ์ ๋ถ์ผ๋ก ๋ํ๋ธ๋ค. i๋ฒ์งธ ๋น๋ฉ (1๋ถํฐ ์์)์ (i,0)๋ถํฐ (i,๋์ด)์ ์ ๋ถ์ผ๋ก ๋ํ๋ผ ์ ์๋ค.ย ๊ณ ์ธต ๋น๋ฉ A์์ ๋ค๋ฅธ ๊ณ ์ธต ๋น๋ฉ B๊ฐ ๋ณผ ์ ์๋ ๋น๋ฉ์ด ๋๋ ค๋ฉด, ๋ ์ง๋ถ์ ์๋ ์ ๋ถ์ด A์ B๋ฅผ ์ ์ธํ ๋ค๋ฅธ ๊ณ ์ธต ๋น๋ฉ์ ์ง๋๊ฑฐ๋ ์ ํ์ง ์์์ผ ํ๋ค.ย ๊ฐ์ฅ ๋ง์ ๊ณ ์ธต ๋น๋ฉ์ด ๋ณด์ด๋ ๋น๋ฉ์ ๊ตฌํ๊ณ , ๊ฑฐ๊ธฐ์ ๋ณด์ด๋ ๋น๋ฉ์ ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋น๋ฉ์ ์ N์ด ์ฃผ์ด์ง๋ค. N์ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค์ 1๋ฒ ๋น๋ฉ๋ถํฐ ๊ทธ ๋์ด๊ฐ ์ฃผ์ด์ง๋ค. ๋์ด๋ 1,000,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฌธ์ ์ ์ ๋ต์ ์ถ๋ ฅํ๋ค.
์์
์์ 1
์ ๋ ฅ
15
1 5 3 2 6 3 2 6 4 2 5 7 3 1 5
์ถ๋ ฅ
7
์์ 2
์ ๋ ฅ
1
10
์ถ๋ ฅ
0
์์ 3
์ ๋ ฅ
4
5 5 5 5
์ถ๋ ฅ
2
์์ 4
์ ๋ ฅ
5
1 2 7 3 2
์ถ๋ ฅ
4
์์ 5
์ ๋ ฅ
10
1000000000 999999999 999999998 999999997 999999996 1 2 3 4 5
์ถ๋ ฅ
6
My Sol
def main(std_i):
ret = 0
for k in range(1, std_i):
ret += check(std_i, k)
for k in range(std_i+1, N+1):
ret += check(std_i, k)
return ret
def check(std_i, k):
dx = std_i - k
dy = arr[std_i] - arr[k]
s = dy/dx
[b, e] = [k+1, std_i] if std_i > k else [std_i+1, k]
for j in range(b, e):
std_h = s*j + (arr[k] - s*k)
if arr[j] >= std_h:
return 0
return 1
N = int(input())
arr = [0] + list(map(int, input().split()))
ret = 0
for std_i in range(1, N+1):
ret = max(ret, main(std_i))
print(ret)
๋ชจ๋ ๋น๋ฉ๋ค์ ๋ํ์ฌ ๊ฐ ๋น๋ฉ์ ๊ธฐ์ค์ ์ผ๋ก ์ข์ฐ์ ๋ชจ๋ ๋น๋ฉ๋ค์ ๋ํด ์ฅ์์ ์๋ ์ง์ ์ ์์ ๊ตฌํ๊ณ , ๊ทธ ์ฌ์ด์ ์ด ์ง์ ์ ํต๊ณผํ๊ฑฐ๋ ์ ํ๋ ์ง์ ์ด ์๋ค๋ฉด ๋น๋ฉ์ ๋ณผ ์ ์๋ ๊ฒ์ด๋ฏ๋ก ๋งค ๊ฑด๋ฌผ์ ๊ธฐ์ค์ ์ผ๋ก ์ก์ ๋๋ง๋ค ์ต๊ณ ์ ์ ๊ฐฑ์ ํ์๋ค. ์ดํ ์ต๊ณ ์ ์ ์ถ๋ ฅํด์ฃผ์๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋ชจ๋ฒ๋ต์
from sys import stdin
n = int(stdin.readline())
h = list(map(int, stdin.readline().split()))
able_to_see = [0] * n
for i in range(n):
inc = -1000000000
for j in range(i+1, n):
slope = (h[j] - h[i]) / (j - i)
if slope > inc:
inc = slope
able_to_see[i] +=1
able_to_see[j] +=1
print(max(able_to_see))
์ฐ์ฐ์๊ฐ๋ ์กฐ๊ธ ์งง๊ณ ๊ธธ์ด๊ฐ ํ๊ธฐ์ ์ผ๋ก ์งง์ ํ์ด๊ฐ ์์ด ๊ฐ์ ธ์๋ค. ๊ฐ ๋น๋ฉ ์ง์ ์ ๊ธฐ์ค์ ์ผ๋ก ํ์๋๋ฐ, ์ต์ด -inf๋ก ๋ inc๊ฐ slope๋ณด๋ค ์์ผ๋ฉด slope๋ก inc๋ฅผ ๊ฐฑ์ ํ๊ณ ๋ฐฐ์ด์ i์ j๋ฅผ 1์ฉ ์ถ๊ฐํด์ฃผ์๋ค. ์ด๋ฐ ๋ฐ์์ ์ด๋ป๊ฒ ํ๋๊ฐ ์ถ๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ