โ๏ธ ๋ฌธ์ ์์ฝ
SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com
์ผ์ชฝ ์กฐ๋ง๊ณผ ์ค๋ฅธ์ชฝ ์กฐ๋ง ๋ชจ๋ 2์นธ ์ด์ ํ๋ณด๋์์ ๋ ์กฐ๋ง๊ถ์ด ํ๋ณด๋์๋ค๊ณ ํ๋ค.
์กฐ๋ง๊ถ์ด ํ๋ณด๋ ์ธ๋์ ์๋ฅผ ๊ตฌํ๋ผ.
๐ช ๋ฌด์ํ๊ฒ ํ๊ธฐ
2์ฐจ์ ๋ฆฌ์คํธ(`board`)์ ๊ฐ ์ธ๋๋ฅผ 1๋ก ํํํ๋ค.
์๋ฅผ ๋ค์ด ์ ์ฌ์ง๊ณผ ๊ฐ์ ์์๋ผ๋ฉด, ์๋์ฒ๋ผ ํ์๋๋ค. (๊ฐ๋ฌผ์ด ์ฒ์ฅ ๋ฐฉํฅ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.)
๊ทธ๋ฆฌ๊ณ ๊ฐ ์ธ๋๋ฅผ ์ํํ๋ฉฐ ์ ์ 2 ์นธ์ด ๋น์ด์๋ค๋ฉด(=0 ์ด๋ผ๋ฉด) `cnt += 1`์ ํ๋ค.
import sys
sys.stdin = open("input.txt", "r")
sys.stdout = open("output.txt", "w")
if __name__ == '__main__':
TC = 10
MAX_HEIGHT = 255 # ์ต๋ ๊ฑด๋ฌผ ๋์ด
for test_case in range(1, TC + 1):
N = int(input()) # ๊ฑด๋ฌผ์ ์
board = [[0] * N for _ in range(MAX_HEIGHT)]
height = list(map(int, input().split()))
# board init
for i in range(2,N-2): # ์ด (์ฒ์๊ณผ ๋ง์ง๋ง 0 ๋ ๊ฐ ๋บ ์ํ์์ ์ํ)
for j in range(height[i]): # ํ
board[j][i] = 1 # ์ด์ ๊ณ ์ , ํ ๋ฐ๋ณต๋ฌธ
cnt = 0
for i in range(2,N-2): # ์ด (์ฒ์๊ณผ ๋ง์ง๋ง 0 ๋ ๊ฐ ๋บ ์ํ์์ ์ํ)
for j in range(height[i]): # ํ
if board[j][i-1] == 0 and board[j][i-2] == 0 and board[j][i+1] == 0 and board[j][i+2] == 0: # ์กฐ๋ง๊ถ ๋ณด์ฅ
cnt += 1
print('#{} {}'.format(test_case, cnt))
โจ ์ฐ์ํ๊ฒ ํ๊ธฐ
๊ฑด๋ฌผ์ ์ํํ๋ฉด์, ํด๋น ๊ฑด๋ฌผ(`height[i]`)์ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ๊ฐ๊ฐ 2๊ฐ์ ๊ฑด๋ฌผ ๋์ด๋ฅผ ๋น๊ตํ๋ ํ์ด์ด๋ค.
1. (ํด๋น ๊ฑด๋ฌผ์ ์ ์ธํ๊ณ ) ์ผ์ชฝ 2๊ฐ์ ๊ฑด๋ฌผ๊ณผ ์ค๋ฅธ์ชฝ 2๊ฐ์ ๊ฑด๋ฌผ ์ค ์ต๋ ๋์ด(`mx`)๋ฅผ ๊ตฌํ๋ค.
1-1. 1๋ฒ์์ ๊ตฌํ ์ต๋๊ฐ(`mx`)์ด ํด๋น ๊ฑด๋ฌผ์ ๋์ด(`height[i]`)๋ณด๋ค ํฌ๋ฉด, ๊ทธ ๊ฑด๋ฌผ ์ ์ฒด์ ์กฐ๋ง๊ถ์ด ๋ณด์ฅ๋ ์ธ๋๊ฐ ์๋ ๊ฒ์ด๋ค.
1-2. 1๋ฒ์์ ๊ตฌํ ์ต๋๊ฐ(`mx`)๋ณด๋ค ํด๋น ๊ฑด๋ฌผ์ ๋์ด(`height[i]`)๊ฐ ํฌ๋ฉด, ๊ทธ ๊ฑด๋ฌผ์ ์ผ๋ถ ์ธ๋๋ ์กฐ๋ง๊ถ์ด ๋ณด์ฅ๋๋ค.
2. 1-2์ ๊ฒฝ์ฐ, ์กฐ๋ง๊ถ์ด ๋ณด์ฅ๋ ์ธ๋์ ์๋ `height[i]-mx`์ด๋ค. ์ด๋ฅผ ๋์ ํ์ฌ ์ต์ข ๋ต์ ๊ตฌํ๋ค.
import sys
sys.stdin = open("input.txt", "r")
sys.stdout = open("output.txt", "w")
if __name__ == '__main__':
TC = 1
for test_case in range(1, TC + 1):
N = int(input())
height = list(map(int, input().split()))
cnt = 0
for i in range(2, N - 2): # ์ฒ์๊ณผ ๋ง์ง๋ง 0 ๋ ๊ฐ ๋บ ์ํ์์ ์ํ
mx = max(height[i - 2], height[i - 1], height[i + 1], height[i + 2])
if height[i] > mx: # ์กฐ๋ง๋ ๋ณด์ฅ๋ ์ธ๋๊ฐ ์กด์ฌ
cnt += (height[i] - mx)
print("#{} {}".format(test_case, cnt))
'๐ซ ETC > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SWEA] 1220.[S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 5์ผ์ฐจ - Magnetic (2) | 2023.11.18 |
---|---|
[SWEA] 1206. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 2์ผ์ฐจ - ์ต๋ ์๊ธ (DFS) (0) | 2023.11.16 |
[SWEA] 1928. Base64 Decoder (2) | 2023.11.14 |
[SWEA] 2001. ํ๋ฆฌ ํด์น (DP) (2) | 2023.11.09 |
[๊นํ์ ์๊ณ ๋ฆฌ์ฆ] ์ฌ๊ณผ๋๋ฌด (BFS) (0) | 2023.11.07 |