SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com
์ค๋ช
์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฐฝ๋ฌธ์ ์ด์์ ๋, ์์ชฝ ๋ชจ๋ ๊ฑฐ๋ฆฌ 2 ์ด์์ ๊ณต๊ฐ์ด ํ๋ณด๋ ๋ ์กฐ๋ง๊ถ์ด ํ๋ณด๋๋ค.
์กฐ๋ง๊ถ์ด ํ๋ณด๋ ์ธ๋์ ์๋ฅผ ๋ฐํํด์ผ ํ๋ค.
ํ์ด
์ฒซ ๋ฒ์งธ๋ถํฐ ์ด์ 2๋ฒ์งธ๊น์ง์ ์ดํ 2๋ฒ์งธ๊น์ง ๋น๊ต๋ฅผ ํ๋ค.
๋ฆฌ์คํธ 4๊ฐ ์ค(ํ์ฌ ์ํํธ ์ฃผ๋ณ ์ํํธ)์์ max๊ฐ์ ์ฐพ๊ณ ํ์ฌ ์ํํธ์์ ์ฐจ์ด๋ฅผ ์ ์ฅํ๋ค.
1. ํ์ฌ ์์น(i-2)์์ ๋ฐ๋ก ์์ชฝ์ ์๋ ์ํํธ(i-3, i-1)์ ๋์ด๋ฅผ ๋น๊ตํ๋ค.

2. ์์ชฝ ์ํํธ๊ฐ ํ์ฌ ์์น๋ณด๋ค ๋์ผ๋ฉด ๋์ด๊ฐ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฑฐ๋ฆฌ ์ฐจ์ด๊ฐ 2์ธ ์ํํธ(i-4, i)์ ๋์ด๋ฅผ ๋น๊ตํ๋ค.

3. ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ์ฌ ์์น๋ณด๋ค ๋์ผ๋ฉด ๋์ด๊ฐ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ๋น๊ตํ ์ํํธ๋ค ์ค์ ๋์ด๊ฐ ๊ฐ์ฅ ๋์ ๊ฑธ ์ฐพ๋๋ค.
4. ํ์ฌ ์์น์์ 3๋ฒ์์ ๊ตฌํ ์ํํธ ๊ธธ์ด์ ์ต๋๊ฐ์ ๋นผ๊ณ ๊ฒฐ๊ณผ๊ฐ์ ๋ํ๋ฉด์ ์ ์ฅํ๋ค.
5. n๋งํผ ๋ฐ๋ณตํ๊ณ ๋ค ํ์ํ์ผ๋ฉด ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
Solution
for tc in range(1, 11):
n = int(input())
apart = list(map(int, input().split()))
ans = 0
for i in range(4, n):
if apart[i-3] >= apart[i-2] or apart[i-1] >= apart[i-2]: #์ผ๋จ ๋ฐ๋ก ์์ ์ํํธ๋ถํฐ ํ๋ณ
continue
else:
if apart[i-4] >= apart[i-2] or apart[i] >= apart[i-2]:
continue
else:
max_apart = max(apart[i-4], apart[i-3], apart[i-1], apart[i])
ans += (apart[i-2] - max_apart)
print('#'+str(tc), ans)
๋ค๋ฅธ ํ์ด(๋ฐ๋ณต๋ฌธ)
for i in range(2, n-2):
max_apart = max(apart[i-1], apart[i-2], apart[i+1], apart[i+2])
if apart[i] > max_apart:
ans += (apart[i] - max_apart)
๐ฉ๐ป ํ๊ณ
์ด๋ ค์ธ ์ค ์์๋๋ฐ ์๊ฐ๋๋ก ๊ตฌํํ๋๋ 1์ฐจ ์ ์ถ์ ์ฑ๊ณตํ๋ค.
๋ค๋ฅธ ํ์ด๋ฅผ ๋ณด๋ฉด ์กฐ๊ฑด๋ฌธ์ ์ฐ์ง ์๊ณ max๋ง์ผ๋ก ๊ตฌํ์ ํด์ ์ฝ๋ ๊ธธ์ด๋ฅผ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ๋ ์๋ค.
'๐งฉ Algorithm > SWEA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [SWEA] 2007. ํจํด ๋ง๋์ ๊ธธ์ด (Python/D2) (0) | 2023.11.19 |
|---|---|
| [SWEA] 1208. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 1์ผ์ฐจ - Flatten (Python/D3) (0) | 2023.11.19 |
| [SWEA] 5431. ๋ฏผ์์ด์ ๊ณผ์ ์ฒดํฌํ๊ธฐ (Python/D3) (2) | 2023.11.16 |
| [SWEA] 1217. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 4์ผ์ฐจ - ๊ฑฐ๋ญ ์ ๊ณฑ (Python/D3) (0) | 2023.11.16 |
| [SWEA] 5948. ์์์ด์ 7-3-5 ๊ฒ์ (Python/D3) (0) | 2023.11.16 |