DevYoon
[SWEA] 5648. ์์ ์๋ฉธ ์๋ฎฌ๋ ์ด์ ๋ณธ๋ฌธ
link ๐ https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRFInKex8DFAUo
1๏ธโฃ ๋ ๊ฐ ์ด์์ ์์๊ฐ ์ถฉ๋ โก๏ธ ์๋์ง ๋ฐฉ์ถ & ์๋ฉธ
2๏ธโฃ ์ ํ ์ข ์ฐ ์ค 1 ๋ฐฉํฅ์ผ๋ก 1์ด์ 1 ์์ง์
3๏ธโฃ ๋์์ ์ด๋
t = int(input())
directy = [1, -1, 0, 0]
directx = [0, 0, -1, 1]
for tc in range(1, t+1):
N = int(input())
arr = [list(map(int, input().split())) for _ in range(N)] # x, y, ๋ฐฉํฅ, ๋ณด์ ์๋์ง K
for idx in range(len(arr)):
arr[idx][0] *= 2
arr[idx][1] *= 2
energy = 0
for _ in range(4002): # -2000 ~ 2000
for idx in range(len(arr)):
arr[idx][0] += directx[arr[idx][2]]
arr[idx][1] += directy[arr[idx][2]]
ddel, visit = set(), set()
for idx in range(len(arr)):
nx, ny = arr[idx][0], arr[idx][1]
if (nx, ny) in visit: # ni, nj๊ฐ visit์ ์์ผ๋ฉด -> DEL์ ์ถ๊ฐ
ddel.add((nx, ny))
visit.add((nx, ny))
for idx in range(len(arr)-1, -1, -1):
if (arr[idx][0], arr[idx][1]) in ddel:
energy += arr[idx][3]
arr.pop(idx)
print(f'#{tc} {energy}')
โ๏ธ ๋ฉ๋ชจ
- ์ฒ์์ ๋ฐ๋ก ๋ต ๋์์ ์ ์ฌ์ผ์ด์ง? ํ๋๋ฐ ์ญ์๋... ํ ์คํธ ์ผ์ด์ค ์ค n๊ฐ๋ง ๋ง์ท์ต๋๋ค...^^ ์ด์ฉ์ง ์ฝ๋ค ํ๋ค..๐ฅฒ
- ์ฃผ์ด์ง ์์๋ฅผ ๋ณด๋ฉด -6์ธ A์ -3์ธ B๋ -4.5์์ ๋ถ๋ชํ๊ฒ ๋๋๋ฐ, -4.5๋ ์ค์์ด๋ฏ๋ก ์ด๋ฅผ ์ํด ๊ฐ ์ขํ์ 2์ฉ์ ๊ณฑํด์ฃผ์ด ์์ฐ์ ์ํ์์ ๋ถ๋ชํ ์ ์๊ฒ ํด์ฃผ์ด์ผ ํ๋ค.
- ๋ ์ฃผ์ด์ง ์ขํ ๊ฐ์ด y, x๊ฐ ์๋๋ผ x, y๋ผ๋ ์ ...ใ ใ ๋ถ๋ช ๋ง๊ฒ ํ๋๋ฐ ์๊พธ fail ๋ ์ ํ์ฐธ ๋ค์ฌ๋ค ๋ดค๋๋ ์ด๋์์ผ์ฃผ๋ ๊ณผ์ ์์ x์ y๋ฅผ ๋ฐ๊ฟ ์ ์ ๊ฒ์ด ์์ธ์ด์๋ค.
- ๋ฐฐ์ด์์๋ ์ ํ๊ฐ ๊ฐ๊ฐ y-1, y+1์ด์์ง๋ง ์ด ๋ฌธ์ ์์ ์ ํ๋ y+1, y-1์ด๋ค.