์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
30 | 31 |
- ๋ฐฑ์ค
- ํ์ด์ฌ
- fe
- ๊ฐ๋ฐ
- Til
- HTML
- ๊ทธ๋ฆฌ๋
- CSS
- ์๊ณ ๋ฆฌ์ฆ
- ํฌ๋กค๋ง
- ์ฝ๋ฉ
- JS
- KDT
- ํ๋ก๊ทธ๋๋จธ์ค
- node.js
- ์ฝ๋ฉ์ ํ
- ํ๋ก ํธ์๋
- ํ ์ดํ๋ก์ ํธ
- mongodb
- ๋ ธ๋ง๋์ฝ๋
- react
- ์ฝ๋ฉํ ์คํธ
- heapq
- ๋๋ฆผ์ฝ๋ฉ
- ํ๋ก์ ํธ
- javascript
- ๋ชจ๊ฐ์ฝ
- ๊ตญ๋น์ง์
- error
- Python
- Today
- Total
๐ฑ → ๐ณ
[Baekjoon] 14281. ๋ณผ๋ก ์์ด - python ๋ณธ๋ฌธ
https://www.acmicpc.net/problem/14281
14281๋ฒ: ๋ณผ๋ก ์์ด
์ ์ ์์ด x[0], x[1], ..., x[N-1]์ด ๋ณผ๋ก์ด ๋๋ ค๋ฉด ๋ชจ๋ 1 ≤ i ≤ N-2์ ๋ํด์, x[i-1]+x[i+1] ≥ 2*x[i]๋ฅผ ๋ง์กฑํด์ผ ํ๋ค. ๋, ๊ธธ์ด๊ฐ 1, 2์ธ ์์ด์ ํญ์ ๋ณผ๋กํ๋ค. ์๋ฅผ ๋ค์ด, 7, 3, 4, 5, 7๊ณผ 4, 2, 1, 3์ ๋ณผ๋กํ
www.acmicpc.net
๋ฌธ์ ์ ๋ณด
๋ฌธ์ ์ ํ ๋์ด๋ ๊ฑธ๋ฆฐ ์๊ฐ ํด๊ฒฐ ์ ๋ฌด ์ค์ค๋ก ๊ตฌํ ์ฑ๊ณต
๋ฐฑํธ๋ํน | ์ค๋ฒ2 | 40m | o | x |
์ค๊ณ ๋ฐฉ๋ฒ
๋ฐฑํธ๋ํน ์๊ณ ๋ฆฌ์ฆ
์ฝ๋
์ฒ์ ์ ๊ทผ - ๋ฌด์์ ๊ทธ๋ฆฌ๋
import sys
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
cnt = 0
for i in range(1, len(arr)-1):
print(arr)
if arr[i-1]+arr[i+1] < 2*arr[i]:
while arr[i-1]+arr[i+1] < 2*arr[i]:
arr[i] -= 1
cnt += 1
print(cnt)
# ์ด ๊ฒฝ์ฐ๋ ๋ค์ ์๊ฐ ๋ฐ๋์์ ๋ ๋ณผ๋ก์ด ์๋๊ฒ ๋ณํ ์ ์์
๋ฐฑํธ๋ํน์ผ๋ก ์ ๊ทผํด์ผํจ์ ๊นจ๋ฌ์
import sys
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
cnt = 0
def back(n, arr):
global cnt
is_convex = True
for i in range(1, n-1):
if arr[i-1]+arr[i+1] < 2*arr[i]:
while arr[i-1]+arr[i+1] < 2*arr[i]:
arr[i] -= 1
cnt += 1
is_convex = False
return cnt, is_convex
while True:
cnt, is_convex = back(n, arr)
if is_convex:
break
print(cnt)
๋ฐ๊พธ๊ณ ๋๋๋ ๊ฒ์ด ์๋๋ผ, arr[i]-=1 ํ์ ๋, ์ ์ชฝ ์์ด์ด ๋ณผ๋ก์ด ์๋๊ฒ ๋ ์ ์์ผ๋ฏ๋ก ๋ฐฑํธ๋ํน์ผ๋ก ํ์ด์ผ ํ์
๊ทผ๋ฐ ์๊ฐ์ด๊ณผ ๋จ
for๋ฌธ์์ while๋ฌธ์ด ๋๋ฉด์ ์๊ฐ๋ณต์ก๋๊ฐ O(N^2)์ด ๋จ
์๊ฐ์ด๊ณผ ํด๊ฒฐ ์ฝ๋
import sys
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
cnt = 0
def back(n, arr):
global cnt
is_convex = True
for i in range(1, n-1):
if arr[i-1]+arr[i+1] < 2*arr[i]:
tmp = arr[i]- (arr[i-1] + arr[i+1])//2
arr[i] -= tmp
cnt += tmp
is_convex = False
return cnt, is_convex
while True:
cnt, is_convex = back(n, arr)
if is_convex:
break
print(cnt)
while๋ฌธ์ ๋์ง ์๊ณ , 1์ฉ ๋นผ์ผ ํ ๋งํผ ๊ณ์ฐ์ ํด์ค
for๋ฌธ์์ ์๋ while๋ฌธ์ ๋ณ๋ก ์ ๋๋ค๊ณ ์๊ฐํ๋๋ฐ ํ์คํ ์ฐ์ฐํ๋ ๊ฒ ๋ณด๋ค๋ ๋ง์ด ์ก์๋จน๊ตฌ๋
(๋น์ฐ) O(N)์ด๋ ..
์ฐธ๊ณ
'Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1926. ๊ทธ๋ฆผ - python (0) | 2023.10.03 |
---|---|
[Baekjoon] 7490. 0 ๋ง๋ค๊ธฐ - python (1) | 2023.10.02 |
[Baekjoon] 1469. ์ ์ฌ์ด ์์ด - python (0) | 2023.09.29 |
[Baekjoon] 17392. ์ฐ์ธํ ๋ฐฉํ - python (0) | 2023.09.29 |
[Baekjoon] 2404. ๋จ์ ๋ถ์๋ก ๋ถํ - python (0) | 2023.09.28 |