ํ๊ต์์ ์ ๊ณตํ๋ ์ฌ๋ฆ๋ฐฉํ ์ฝ๋ฉ ํ ์คํธ ๋๋น ์บ ํ with ์ฝ๋ํธ๋ฆฌ | ์ฝ๋ฉํ ์คํธ ์ค๋น๋ฅผ ์ํ ์๊ณ ๋ฆฌ์ฆ ์ ์์ ์๋ก๋ ๋ฌธ์ ํ์ด ๋ฐ ๊ฐ์ ์ ๋ฆฌ ๋ด์ฉ์ ๋๋ค.
ํ์ฌ ์ขํ x, y = (0, 0)์ด๋ผ๊ณ ํ ๋ ๋์ชฝ์ผ๋ก ์ด๋ํ๋ฉด x = x + 1, y = y + 0, ๋จ์ชฝ์ผ๋ก ์ด๋ํ๋ฉด x = x + 0, y = y - 1, ์์ชฝ์ผ๋ก ์ด๋ํ๋ฉด x = x - 1, y = y + 0, ๋ถ์ชฝ์ผ๋ก ์ด๋ํ๋ฉด x = x + 0, y = y + 1์ผ๋ก ์ขํ๊ฐ ๋ณํ๊ฒ ๋๋ค.
์ด๋ฅผ if๋ฌธ์ผ๋ก ํํํ๊ฒ ๋๋ฉด ๋ฐ์์ ๊ฐ์ด 8์ค๋ก ํํ๋๋๋ฐ ์ด๋ ๋น์ทํ ์ฝ๋์ ๋ฐ๋ณต์ ์ธ ํํ๋ฅผ ์ง๋ ์ค์๋ฅผ ์ ๋ฐํ ์ ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด dx, dy ํ ํฌ๋์ด ๋ฑ์ฅํ์๋ค.
x, y = 0, 0 #์ถ๋ฐ ์ง์ ์ค์
dir_num = 0 #์ด๋ ๋ฐฉํฅ์ ๋ํ๋ธ๋ค
if dir_num == 0:
nx, ny = x + 1, y + 0
elif dir_num == 1:
nx, ny = x + 0, y - 1
elif dir_num == 2:
nx, ny = x - 1, y + 0
else:
nx, ny = x + 0, y + 1
x, y = 0, 0 #์ถ๋ฐ ์ง์ ์ค์
dir_num = 0 #์ด๋ ๋ฐฉํฅ์ ๋ํ๋ธ๋ค
# ๋ฐฉํฅ์ ์ ์ฅํ๋ ์์๋ ๋ฌธ์ ์ ๋ฐ๋ผ ์ฌ์ฉ์๊ฐ ์ง์
# 0 1 2 3
dx = [1, 0, -1, 0]
dy = [0, -1, 0, 1]
#์กฐ๊ฑด์ ๋ฐ๋ผ ์ด๋
nx, ny = x + dx[dri_num], y + dy[dir_num]
dir_num = 3 #์ด๊ธฐ ์ด๋ ๋ฐฉํฅ
x, y = 1, 5 #์ด๊ธฐ ์์น
dx, dy = [1, 0, -1, 0], [0, -1, 0, 1] #๋๋จ์๋ถ ์์(์๊ณ๋ฐฉํฅ ์)
#==dx, dy ํ
ํฌ๋ ์ฌ์ฉ ์ํ์ ๊ฒฝ์ฐ==
# ์๊ณ๋ฐฉํฅ 90' ํ์ ()
# if dir_num == 0:
# dir_num = 1
# elif dir_num == 1:
# dir_num = 2
# elif dir_num == 2:
# dir_num = 3
# else:
# dir_num = 0
#==dx, dy ํ
ํฌ๋ ์ฌ์ฉํ์ ๊ฒฝ์ฐ==
# ์๊ณ ๋ฐฉํฅ 90' ํ์
# 0 -> 1
# 1 -> 2
# 2 -> 3
# 3 -> 0
dir_num = (dir_num + 1) % 4
nx, ny = x + dx[dir_num], y + dy[dir_num]
# ๋ฐ์๊ณ ๋ฐฉํฅ 90' ํ์
# 3 -> 2
# 2 -> 1
# 1 -> 0
# 0 -> 3
dir_num = (dir_num -1 + 4) % 4
nx, ny = x + dx[dir_num], y + dy[dir_num]
dx, dy์์ ๋ฐฉํฅ ๋ฒํธ๋ฅผ ์๊ณ ๋ฐฉํฅ ์์๋๋ก ์ ๋ ฅํ๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ตญ ์๊ณ ๋ฐฉํฅ์ผ๋ก 90๋ ํ์ ํ๋ ๊ฒ์ dir_num์ 1 ์ฆ๊ฐ์ํค๋ ๊ฒ๊ณผ ๊ฐ๋ค.
์ด๋ ์ฃผ์ํด์ผ ํ ์ ์ด ์กด์ฌํ๋๋ฐ, ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ ๊ฒฝ์ฐ ํ์ฌ dir_num์ด 3์ธ ๊ฒฝ์ฐ dir_num = dir_num + 1
์คํ ์ dri_num์ด 4๊ฐ ๋์ด list index out of range ์ค๋ฅ๊ฐ ๋จ๊ฒ ๋๋ค.(๋ฑกํฅ์ ์ด 0,1,2,3 4๊ฐ ๊น์ง ์กด์ฌํ๊ธฐ ๋๋ฌธ์)
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด dir_num = (dir_num + 1) % 4
์ ์ฌ์ฉํ๋ค.
(3+1) % 4 = 0์ด๊ธฐ ๋๋ฌธ์ 3->0์ผ๋ก ๋ณ๊ฒฝ์ด ์ ์ด๋ค์ง๋ค.
๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ ๊ฒฝ์ฐ์๋ ์๊ณ๋ฐฉํฅ๊ณผ ๋ฐ๋๋ก dir_num์ 1์ฉ ๋นผ์ฃผ๋ฉด ๋๋๋ฐ ์ด ๊ฒฝ์ฐ์๋ ๋ฐ๋๊ธฐ ์ dir_num์ด 0์ธ ๊ฒฝ์ฐ dir_num = dir_num - 1
์ํ ์ dir_num์ด -1์ด ๋์ด ์ ๊ฒฝ์ฐ์ ๋์ผํ๊ฒ list index out of range ์ค๋ฅ๊ฐ ๋จ๊ฒ ๋๋ค.
์ด ๊ฒฝ์ฐ์๋ ์์ ๋ฐฉ๋ฒ๊ณผ ์ ์ฌํ๊ฒ ์ด๋ฅผ ํด๊ฒฐํ๋๋ฐ dir_num = (dir_num -1 + 4) % 4
๋ฅผ ์ฌ์ฉํ๋ค.
(0 - 1 + 4) % 4 = 3์ด๊ธฐ ๋๋ฌธ์ 0 -> 3์ผ๋ก ๋ณ๊ฒฝ์ด ์ ์ด๋ฃจ์ด์ง๋ค.
์๊ณ, ๋ฐ์๊ณ๊ฐ ์๋๊ณ ํน์ ์ง์ ์์ ๋ฐ๋๋ก ๋์ ๊ฐ๋ ๊ฒฝ์ฐ๋ผ๋ฉด ์ด์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑ
n, t = map(int, input().split())
x, y, dir_c = input().split()
#ํ,์ด์ด 1ํ 1์ด๋ถํฐ ์์ํ๋ฏ๋ก -1 ์ฉ ํด์ค๋ค.
x = int(x) - 1
y = int(y) - 1
#์
๋ ฅ์ ๋ฐ๋ฅธ ๋ฐฉํฅ ์ง์
dict_dir = {
"U": 2,
"D": 1,
"R": 0,
"L": 3
}
#dxs, dys๋ฅผ ์ง์ ํ ๋ ๋ฐ๋ ๋ฐฉํฅ์ธ ๊ฑธ ๊ณ์ฐํ๊ธฐ ์ฝ๋๋ก ์ง์
dir_num = dict_dir[dir_c]
dxs = [0, 1, -1, 0]
dys = [1, 0, 0, -1]
def in_range(x, y):
return x >= 0 and x <n and y >= 0 and y < n
for i in range(t):
nx, ny = x + dxs[dir_num], y + dys[dir_num]
if in_range(nx, ny):
x, y = nx, ny
else: #๋ฐ๋ ๋ฐฉํฅ์ ์
dir_num = 3 - dir_num
# ์ด๊ธฐ ํ์ด(๊ฐ๋
์ฑ์ด ๋จ์ด์ง)
# if not in_range(nx, ny):
# dir_num = 3 - dir_num
# continue
# x, y = nx, ny
#์ ๋ต์ ๋์ถํ ๋๋ ๋นผ์คฌ๋ 1์ ๋ค์ ๋ํด์ค๋ค.
x = x + 1
y = y + 1
print(x, y)
dir_num = 3 - dir_num
์ ํ๋ฉด ๋ฐ๋๋ฐฉํฅ์ ๊ณ์ฐํ ์ ์๋ค.๋จผ์ dx, dy๋ฅผ ์ด์ฐจ์ ๋ฐฐ์ด(๊ฒฉ์)์์ ์๊ฐํด ๋ณด๋ฉด x๋ฅผ ํ, y๋ฅผ ์ด๋ก ์๊ฐํด์ผํ๋ค.
๋ค์์ผ๋ก ์ด๋ํ ์์น๊ฐ ๊ฒฉ์์์ ๋ฒ์ด๋๋์ง๋ฅผ ํ๋จํด์ฃผ๋ in_range() ํจ์๋ฅผ ์ ์ํ๊ณ ์ฌ์ฉํด์ผํ๋ค.
์ํ ์ข์ฐ์ ์ธ์ ํ 1์ ๊ฐ์๊ฐ 3๊ฐ ์ด์์ธ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ๋ฅผ ์ดํด๋ณด์
n = int(input()) #n * n์์์ n
arr = [list(map(int, input().split())) for _ in range(n)] #์ด์ฐจ์ ๋ฐฐ์ด ์
๋ ฅ
#์ฐํ์ข์
dxs = [0, 1, 0, -1]
dys = [1, 0, -1, 0]
#๊ฒฉ์์์ ๋ฒ์ด๋๋์ง ํ๋จ
def in_range(x, y):
return x >= 0 and x < n and y >= 0 and y < n
result = 0
for x in range(n):
for y in range(n):ใ
count = 0
for dx, dy in zip(dxs, dys):
nx, ny = x + dx, y + dy
if in_range(nx, ny) and arr[nx][ny] == 1:
count += 1
if count == 3:
result += 1
break
print(result)
if in_range(nx, ny) and arr[nx][ny] == 1:
์ด ์ฝ๋์์ in_range() ์กฐ๊ฑด์ด ๋จผ์ ์ํ๋์ด์ผ ํ๋ค.if arr[nx][ny] == 1 and in_range(nx, ny):
๋ผ๊ณ ์์๋ฅผ ๋ฐ๊พผ๋ค๋ฉดarr[nx][ny] == 1
์์ index out of range() ์ค๋ฅ๊ฐ ๋จ๊ธฐ ๋๋ฌธ์ ์์๋ฅผ ์ฃผ์ํด์ผ ํ๋ค.
x, y = 0, 0
dxs = [0, 1, 0, -1]
dys = [1, 0, -1, 0]
for dx, dy in zip(dxs, dys):
x, y = x + dx, y + dy
for๋ฌธ ์์ ๋ฆฌ์คํธ, dictionary ์ ์ธ ์ ํฌ๊ธฐ๋ฅผ ๋ณด๊ณ for๋ฌธ ์์ ๋์ง ๋ฐ์ ๋์ง ์๊ฐํด๋ณด์์ผ ํ๋ค
map์ผ๋ก return ํ ํ๋ณํ์ ํ์ง ์๋๋ค๋ฉด len()๊ณผ ๊ฐ์ ๋ฆฌ์คํธ๊ฐ ์ ๊ณตํ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋ฐ๋ผ์ ํ์ด์ฌ map์ฌ์ฉ ์ return ๊ฐ์ด map์ด๋ฏ๋ก tuple์ด๋ list๋ก ๊ฐ์ธ์ฃผ๋ ๊ฒ์ด ์ข๋ค.
๊ฒฐ๋ก : unpacking ์ ํ๋ณํ์ ํ๊ณ ์งํ!!
๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ dir_num๊ณผ ๋ฐฉํฅ์ ๋ํ๋ด๋ ์ ๋ ฅํ์์ ๋งคํํด์ค๋ค.
#์
๋ ฅ์ ๋ฐ๋ฅธ ๋ฐฉํฅ ์ง์
dict_dir = {
"U": 2,
"D": 1,
"R": 0,
"L": 3
}
dir_num = dict_dir[์
๋ ฅ๊ฐ]