1. ๋ฌธ์ ์ค๋ช
- ์
๋ ฅ
- ๊ฑด๋ฌผ์ ๋ด๊ตฌ๋๋ฅผ ๋ํ๋ด๋ 2์ฐจ์ ์ ์ ๋ฐฐ์ด board์
- ์ ์ ๊ณต๊ฒฉ ํน์ ์๊ตฐ์ ํ๋ณต ์คํฌ์ ๋ํ๋ด๋ 2์ฐจ์ ์ ์ ๋ฐฐ์ด skill
- ์ถ๋ ฅ
- ์ ์ ๊ณต๊ฒฉ ํน์ ์๊ตฐ์ ํ๋ณต ์คํฌ์ด ๋ชจ๋ ๋๋ ๋ค ํ๊ดด๋์ง ์์ ๊ฑด๋ฌผ์ ๊ฐ์๋ฅผ return
2. ์ฝ๋
solution1.py
def solution(board, skill):
answer = 0
tmp = [[0]*(len(board[0])+1) for _ in range(len(board)+1)]
for type, r1,c1,r2,c2,degree in skill:
tmp[r1][c1] += degree if type ==2 else -degree
tmp[r1][c2+1] += -degree if type==2 else degree
tmp[r2+1][c1] += -degree if type==2 else degree
tmp[r2+1][c2+1] += degree if type==2 else -degree
#ํ ๊ธฐ์ค ๋์ ํฉ
for i in range(len(tmp)-1):
for j in range(len(tmp[0])-1):
tmp[i][j+1] += tmp[i][j]
#์ด ๊ธฐ์ค ๋์ ํฉ
for j in range(len(tmp[0])-1):
for i in range(len(tmp)-1):
tmp[i+1][j]+=tmp[i][j]
#๊ธฐ์กด ๋ฐฐ์ด๊ณผ ํฉํจ
for i in range(len(board)):
for j in range(len(board[0])):
board[i][j] += tmp[i][j]
# board์ ๊ฐ์ด 1์ด์์ธ ๊ฒฝ์ฐ answer++
if board[i][j] > 0: answer += 1
return answer
3. ํ๊ณ
- ์ฒ์ ํ ๋ ์ ํ์ฑ์ ํต๊ณผํ๋๋ฐ ํจ์จ์ฑ์ ๋ชจ๋ ํต๊ณผ๋ฅผ ๋ชปํ๋ค.
- ํ์ด๋ฅผ ๋ณด๋, ๋์ ํฉ์ด๋ผ๋ ๊ฒ์ ์ด๋ค.
- ๋์ ํฉ์ด๋?
- ๋ง์ฝ [1, 3, 5, 5]์ 1์ฐจ์ ๋ฐฐ์ด์์ 0๋ฒ~2๋ฒ ์ธ๋ฑ์ค๊น์ง 2๋งํผ ํผํด๋ฅผ ์ฃผ๊ณ ์ถ๋ค๋ฉด
- ๋ณดํต์ O(N)์ ์๊ฐ๋ณต์ก๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ถ๋ฅผ ํ์ํ๋ค.
- ๋์ ํฉ์ ์ฌ์ฉํ๋ฉด O(1)๋ก ํด๊ฒฐ ๊ฐ๋ฅ
- 1์ฐจ์ ๋ฐฐ์ด์ ๊ฒฝ์ฐ(์์)
- [0,0,0,0] 1์ฐจ์ ๋ฐฐ์ด๊ณผ ๊ธธ์ด๊ฐ ๊ฐ์ 0์ผ๋ก ์ ๋ถ ์ด๊ธฐํ๋ ๋ฐฐ์ด์ ์์ฑํ๋ค.
- ์์ ๋ถ๋ถ์ ๋นผ๋ ค๋ ๊ฐ์ ๋ฃ๊ณ , ์ข ๋ฃ ์ง์ ๋ณด๋ค ํ ์นธ ๋ค์ ๋ฐ๋ ๋ถํธ๋ฅผ ๊ฐ์ง ๊ฐ์ ๋ฃ๋๋ค.
- [-2,0,0,2]
- ๋์ ํฉ ์งํ : [-2, -2, 0, 2] -> [-2, -2, -2, 2] -> [-2, -2, -2, 0]
- ๊ธฐ์กด ๋ฐฐ์ด์ ํฉํจ: [1, 3, 5, 5] + [-2, -2, -2, 0] = [-1, 1, 3, 5]
- 2์ฐจ์ ๋ฐฐ์ด์ ๊ฒฝ์ฐ
- (0,0) ~ (2,2)๊น์ง n๋งํผ ๋ณํ๋ฅผ ์ฃผ๊ณ ์ถ๋ค๋ฉด,์๋์ ๊ฐ์ด n๋ฐฐ์น
[n, 0, 0, -n]
[0, 0, 0, 0]
[0, 0, 0, 0]
[-n, 0, 0, n] - ์ด๊ธฐ์ค, ํ๊ธฐ์ค ๋์ ํฉ์ ์งํ
[n, n, n, 0]
[n, n, n, 0]
[n, n, n, 0]
[0, 0, 0, 0]
- (0,0) ~ (2,2)๊น์ง n๋งํผ ๋ณํ๋ฅผ ์ฃผ๊ณ ์ถ๋ค๋ฉด,์๋์ ๊ฐ์ด n๋ฐฐ์น
- ๊ฒฐ๋ก
- ์ฆ (x1, y1) ~ (x2, y2)๊น์ง์ n๋งํผ์ ๋ณํ๋ฅผ ์ฃผ๊ณ ์ถ๋ค๋ฉด,(x1, y1) = n, (x2+1, y1) = -n, (x1, y2+1) = -n, (x2+1, y2+1) = n ๋งํผ์ ๊ฐ์ ๋ํด์ค๋ค.
- ๊ทธ ํ ํ, ์ด ๋์ ํฉ ์งํ ํ, ๋ฐฐ์ด์ ๊ธฐ์กด board๋ฐฐ์ด์ ๋ํด์ค๋ค.
- ๋์ ํฉ์ด๋?
4. ์ฐธ๊ณ
https://programmers.co.kr/questions/25471
https://kimjingo.tistory.com/155
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ํ ํธ์ง (Python) (0) | 2022.02.18 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (Python) (0) | 2022.02.16 |
[ํ๋ก๊ทธ๋๋จธ์ค] n์ง์ ๊ฒ์ (Python) (0) | 2022.02.16 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (Python) (0) | 2022.02.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์คํ์ฑํ ๋ฐฉ (Python) (0) | 2022.02.12 |