| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 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 |
- javascript
- ํ์ด์ฌ
- ์ฝ๋ฉํ ์คํธ
- ๊ฐ๋ฐ
- ์ฝ๋ฉ์ ํ
- ๋๋ฆผ์ฝ๋ฉ
- ๊ตญ๋น์ง์
- CSS
- ํ๋ก ํธ์๋
- ํฌ๋กค๋ง
- error
- ์๊ณ ๋ฆฌ์ฆ
- fe
- ํ๋ก์ ํธ
- ํ๋ก๊ทธ๋๋จธ์ค
- ํ ์ดํ๋ก์ ํธ
- ๋ ธ๋ง๋์ฝ๋
- ๋ชจ๊ฐ์ฝ
- KDT
- heapq
- ๋ฐฑ์ค
- HTML
- Python
- ์ฝ๋ฉ
- ๊ทธ๋ฆฌ๋
- JS
- Til
- react
- mongodb
- node.js
- 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 |