์นด์นด์ค ๋ธ๋ผ์ธ๋ 2022 ์๊ถ ๋ฌธ์ ํ๋ค๊ฐ ๋จธ๋ฆฌ ๋ ๋จ. ๋ธ๋ฃจ์คํฌ๋ฆฐ ๋ ์ ๋์๋ก ์ธ์ํ๊ณ ๋ค๋ฅธ ๋ฌธ์ ํ๊ธฐ ์์ ใ
๋ฌธ์ ์ค๋ช
๊ฒ์ ์บ๋ฆญํฐ๋ฅผ 4๊ฐ์ง ๋ช ๋ น์ด๋ฅผ ํตํด ์์ง์ด๋ ค ํฉ๋๋ค. ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- U: ์์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
- D: ์๋์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
- R: ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
- L: ์ผ์ชฝ์ผ๋ก ํ ์นธ ๊ฐ๊ธฐ
์บ๋ฆญํฐ๋ ์ขํํ๋ฉด์ (0, 0) ์์น์์ ์์ํฉ๋๋ค. ์ขํํ๋ฉด์ ๊ฒฝ๊ณ๋ ์ผ์ชฝ ์(-5, 5), ์ผ์ชฝ ์๋(-5, -5), ์ค๋ฅธ์ชฝ ์(5, 5), ์ค๋ฅธ์ชฝ ์๋(5, -5)๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, "ULURRDLLU"๋ก ๋ช ๋ นํ๋ค๋ฉด
- 1๋ฒ ๋ช ๋ น์ด๋ถํฐ 7๋ฒ ๋ช ๋ น์ด๊น์ง ๋ค์๊ณผ ๊ฐ์ด ์์ง์ ๋๋ค.
- 8๋ฒ ๋ช ๋ น์ด๋ถํฐ 9๋ฒ ๋ช ๋ น์ด๊น์ง ๋ค์๊ณผ ๊ฐ์ด ์์ง์ ๋๋ค.
์ด๋, ์ฐ๋ฆฌ๋ ๊ฒ์ ์บ๋ฆญํฐ๊ฐ ์ง๋๊ฐ ๊ธธ ์ค ์บ๋ฆญํฐ๊ฐ ์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ค๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์ ์์์์ ๊ฒ์ ์บ๋ฆญํฐ๊ฐ ์์ง์ธ ๊ธธ์ด๋ 9์ด์ง๋ง, ์บ๋ฆญํฐ๊ฐ ์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ์ ๊ธธ์ด๋ 7์ด ๋ฉ๋๋ค. (8, 9๋ฒ ๋ช ๋ น์ด์์ ์์ง์ธ ๊ธธ์ 2, 3๋ฒ ๋ช ๋ น์ด์์ ์ด๋ฏธ ๊ฑฐ์ณ ๊ฐ ๊ธธ์ ๋๋ค)
๋จ, ์ขํํ๋ฉด์ ๊ฒฝ๊ณ๋ฅผ ๋์ด๊ฐ๋ ๋ช ๋ น์ด๋ ๋ฌด์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, "LULLLLLLU"๋ก ๋ช ๋ นํ๋ค๋ฉด
- 1๋ฒ ๋ช ๋ น์ด๋ถํฐ 6๋ฒ ๋ช ๋ น์ด๋๋ก ์์ง์ธ ํ, 7, 8๋ฒ ๋ช ๋ น์ด๋ ๋ฌด์ํฉ๋๋ค. ๋ค์ 9๋ฒ ๋ช ๋ น์ด๋๋ก ์์ง์ ๋๋ค.
์ด๋ ์บ๋ฆญํฐ๊ฐ ์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ์ ๊ธธ์ด๋ 7์ด ๋ฉ๋๋ค.
๋ช ๋ น์ด๊ฐ ๋งค๊ฐ๋ณ์ dirs๋ก ์ฃผ์ด์ง ๋, ๊ฒ์ ์บ๋ฆญํฐ๊ฐ ์ฒ์ ๊ฑธ์ด๋ณธ ๊ธธ์ ๊ธธ์ด๋ฅผ ๊ตฌํ์ฌ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ ์ฌํญ
- dirs๋ stringํ์ผ๋ก ์ฃผ์ด์ง๋ฉฐ, 'U', 'D', 'R', 'L' ์ด์ธ์ ๋ฌธ์๋ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- dirs์ ๊ธธ์ด๋ 500 ์ดํ์ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
dirs | answer |
"ULURRDLLU" | 7 |
"LULLLLLLU" | 7 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
์
์ถ๋ ฅ ์ #2
๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
ํ์ด
- ์ง๋๊ฐ ๊ธธ์ ์ด๋ป๊ฒ ์ฒดํฌํด์ผ ๋๋ ์ถ์๋๋ฐ...
- ์ง์์ค์ 10๊ฐ, ํ์ ์ค์ 11๊ฐ
- ์ํ ์ด๋ : ๊ฐ๋ก 10, ์๋ก 11
- ์์ง ์ด๋ : ๊ฐ๋ก 11, ์ธ๋ก 10
- ์ง์์ค์ 10๊ฐ, ํ์ ์ค์ 11๊ฐ
- ๊ฐ ์๋๊ตฌ๋... ๊ทธ๋ฅ ๊ฐ๋ก ์ด๋ / ์ธ๋ก ์ด๋์ผ๋ก ๊ตฌ๋ถํด์..
- ๋ฌด์ง์ฑ ์ฝ๋ฉ
def solution(dirs):
answer = 0
# ์ง๋
horizontal_move = [[False] * 11 for _ in range(11)]
vertical_move = [[False] * 11 for _ in range(11)]
def draw_map():
for i in range(11):
for j in range(10):
if horizontal_move[i][j] == False:
print("+ ",end="")
else:
print("+-",end="")
print("+")
if i < 10:
for j in range(11):
if vertical_move[i][j] == False:
print(" ",end="")
else:
print("| ",end="")
print("")
x, y = 5, 5
for i in dirs:
print("x,y:", x, y)
if i == "L":
x -= 1
if x < 0:
x = 0
horizontal_move[y][x] = True
elif i == "R":
x += 1
if x > 10:
x = 10
horizontal_move[y][x-1] = True
if i == "U":
y -= 1
if y < 0:
y = 0
vertical_move[y][x] = True
elif i == "D":
y += 1
if y > 10:
y = 10
vertical_move[y-1][x] = True
draw_map()
for h in horizontal_move:
answer += sum(h)
for v in vertical_move:
answer += sum(v)
return answer
- ํ ์คํธ ์ผ์ด์ค๋ ์ ๋ต ๋ง๊ตฌ์
ํ
์คํธ 1
์
๋ ฅ๊ฐ ใ "ULURRDLLU"
๊ธฐ๋๊ฐ ใ 7
์คํ ๊ฒฐ๊ณผ ใ ํ
์คํธ๋ฅผ ํต๊ณผํ์์ต๋๋ค.
์ถ๋ ฅ ใ x,y: 5 5
x,y: 5 4
x,y: 4 4
x,y: 4 3
x,y: 5 3
x,y: 6 3
x,y: 6 4
x,y: 5 4
x,y: 4 4
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + +-+-+ + + + +
| |
+ + + + +-+-+ + + + +
|
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
ํ
์คํธ 2
์
๋ ฅ๊ฐ ใ "LULLLLLLU"
๊ธฐ๋๊ฐ ใ 7
์คํ ๊ฒฐ๊ณผ ใ ํ
์คํธ๋ฅผ ํต๊ณผํ์์ต๋๋ค.
์ถ๋ ฅ ใ x,y: 5 5
x,y: 4 5
x,y: 4 4
x,y: 3 4
x,y: 2 4
x,y: 1 4
x,y: 0 4
x,y: 0 4
x,y: 0 4
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
|
+-+-+-+-+ + + + + + +
|
+ + + + +-+ + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + +
- ์กฐ๊ธ ๋ค๋ฌ์ด์ ์ฒด์ ๊ณ !
- ์คํจ๋๋ค ใ ก.ใ ก?
def solution(dirs):
answer = 0
horizontal_move = [[False] * 11 for _ in range(11)]
vertical_move = [[False] * 11 for _ in range(11)]
x, y = 5, 5
for i in dirs:
if i == "L":
x -= 1
if x < 0:
x = 0
horizontal_move[y][x] = True
elif i == "R":
x += 1
if x > 10:
x = 10
horizontal_move[y][x-1] = True
if i == "U":
y -= 1
if y < 0:
y = 0
vertical_move[y][x] = True
elif i == "D":
y += 1
if y > 10:
y = 10
vertical_move[y-1][x] = True
for h in horizontal_move:
answer += sum(h)
for v in vertical_move:
answer += sum(v)
return answer
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.02ms, 10.2MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.02ms, 10.3MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.03ms, 10.4MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.06ms, 10.1MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.03ms, 10.1MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.02ms, 10.3MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.03ms, 10.2MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.04ms, 10.2MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.04ms, 10.1MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.04ms, 10.3MB)
ํ
์คํธ 11 ใ ํต๊ณผ (0.04ms, 10.4MB)
ํ
์คํธ 12 ใ ํต๊ณผ (0.03ms, 10.3MB)
ํ
์คํธ 13 ใ ํต๊ณผ (0.03ms, 10.2MB)
ํ
์คํธ 14 ใ ํต๊ณผ (0.03ms, 10.2MB)
ํ
์คํธ 15 ใ ์คํจ (0.03ms, 10.4MB)
ํ
์คํธ 16 ใ ํต๊ณผ (0.11ms, 10.3MB)
ํ
์คํธ 17 ใ ์คํจ (0.09ms, 10.4MB)
ํ
์คํธ 18 ใ ์คํจ (0.16ms, 10.4MB)
ํ
์คํธ 19 ใ ์คํจ (0.09ms, 10.2MB)
ํ
์คํธ 20 ใ ์คํจ (0.09ms, 10.2MB)
- ์! ๋ชป ๊ฐ๋ ๋ถ๋ถ์์ ์ฒ๋ฆฌํ๋ฉด ๋๋๊ฑฐ๋ค? ์์ดใ ฃใ ฃ. ๊ดํ ์ซ์๋ค.
def solution(dirs):
answer = 0
horizontal_move = [[False] * 11 for _ in range(11)]
vertical_move = [[False] * 11 for _ in range(11)]
x, y = 5, 5
for i in dirs:
if i == "L":
x -= 1
if x < 0:
x = 0
else:
horizontal_move[y][x] = True
elif i == "R":
x += 1
if x > 10:
x = 10
else:
horizontal_move[y][x-1] = True
if i == "U":
y -= 1
if y < 0:
y = 0
else:
vertical_move[y][x] = True
elif i == "D":
y += 1
if y > 10:
y = 10
else:
vertical_move[y-1][x] = True
for h in horizontal_move:
answer += sum(h)
for v in vertical_move:
answer += sum(v)
return answer
- ์๋ ๋น ๋ฅด๊ฒ ๋์์ ์ข๋ค
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.02ms, 10.3MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.02ms, 10.1MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.02ms, 10.2MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.03ms, 10.2MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.03ms, 10.3MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.02ms, 10.3MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.02ms, 10.2MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.02ms, 10.3MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.02ms, 10.3MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.04ms, 10.1MB)
ํ
์คํธ 11 ใ ํต๊ณผ (0.02ms, 10.4MB)
ํ
์คํธ 12 ใ ํต๊ณผ (0.05ms, 10.2MB)
ํ
์คํธ 13 ใ ํต๊ณผ (0.05ms, 10.2MB)
ํ
์คํธ 14 ใ ํต๊ณผ (0.03ms, 10.2MB)
ํ
์คํธ 15 ใ ํต๊ณผ (0.03ms, 10.3MB)
ํ
์คํธ 16 ใ ํต๊ณผ (0.13ms, 10.4MB)
ํ
์คํธ 17 ใ ํต๊ณผ (0.15ms, 10.1MB)
ํ
์คํธ 18 ใ ํต๊ณผ (0.10ms, 10.3MB)
ํ
์คํธ 19 ใ ํต๊ณผ (0.16ms, 10.2MB)
ํ
์คํธ 20 ใ ํต๊ณผ (0.14ms, 10.3MB)
- ๊ณ ์์ ํ์ด.
- ๊ฒฝ๋ก๋ฅผ ๋ฆฌ์คํธ๋ก ๋ง๋ค์ด์ ๋ค ์ ์ฅํ๋ฉด ๋๋๊ฑฐ์๋ค;;;
- set()์ผ๋ก ์ ์ฅํ๋ฉด ์ค๋ณต์ ์ ์ฅ์๋๋๊น...
def solution(dirs):
s = set()
d = {'U': (0,1), 'D': (0, -1), 'R': (1, 0), 'L': (-1, 0)}
x, y = 0, 0
for i in dirs:
nx, ny = x + d[i][0], y + d[i][1]
if -5 <= nx <= 5 and -5 <= ny <= 5:
s.add((x,y,nx,ny))
s.add((nx,ny,x,y))
x, y = nx, ny
return len(s)//2
- ์๋๋? ์ด์ง ๋๋ฆฌ๊ธด ํ์ง๋ง... set()์ add ์ฐ์ฐ ๋๋ฌธ์ด๋ ค๋...
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.05ms, 10.2MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.01ms, 10.1MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.10ms, 10.2MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.06ms, 10.2MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.03ms, 10.1MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.02ms, 10.2MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.03ms, 10.2MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.04ms, 10.2MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.05ms, 10.1MB)
ํ
์คํธ 11 ใ ํต๊ณผ (0.03ms, 10.1MB)
ํ
์คํธ 12 ใ ํต๊ณผ (0.10ms, 10.3MB)
ํ
์คํธ 13 ใ ํต๊ณผ (0.09ms, 10.1MB)
ํ
์คํธ 14 ใ ํต๊ณผ (0.09ms, 10.1MB)
ํ
์คํธ 15 ใ ํต๊ณผ (0.08ms, 10.2MB)
ํ
์คํธ 16 ใ ํต๊ณผ (0.37ms, 10.2MB)
ํ
์คํธ 17 ใ ํต๊ณผ (0.35ms, 10.2MB)
ํ
์คํธ 18 ใ ํต๊ณผ (0.44ms, 10.4MB)
ํ
์คํธ 19 ใ ํต๊ณผ (0.33ms, 10.2MB)
ํ
์คํธ 20 ใ ํต๊ณผ (0.37ms, 10.2MB)
- ๋น์ทํ ๋ฐฉ์์ผ ์ค ์์๋๋ฐ,
- visit ๋ฅผ 3์ค ๋ฐฐ์ด๋ก ๋ง๋ค์ด์, ํด๋น ์ ์ผ๋ก ๋ค์ด์ค๊ธฐ ์ ์ขํ๊น์ง ์ ์ฅ.
- ๊ทธ๊ฒ๋ ๋๋ฒ์ฉ...
def solution(dirs):
y, x = 0, 0
answer = 0
visit = [[[] for _ in range(11)] for _ in range(11)]
for order in dirs:
# ์์ง์ฌ์ผํ ์ขํ ๊ตฌํ๊ธฐ
if order == "U":
a, b = y + 1, x
elif order == "L":
a, b = y, x - 1
elif order == "R":
a, b = y, x + 1
elif order == "D":
a, b = y - 1, x
# ์์ผ๋ก ๊ฐ์ผํ ์ขํ๊ฐ ๊ฒฝ๊ณ๋ฉด์ ๋ฒ์ด๋๋์ง ํ์ธ
if -5 <= a <= 5 and -5 <= b <= 5:
# ์ด๋ฏธ ์ง๋์ง ์์๋ ๊ธธ๋ง ์นด์ดํธ
if (y, x) not in visit[a][b]:
# ๋์ง์ ์ ์๋ ๊ธธ์ ๊ฐ๊ฐ์ ์ถ๋ฐ์ ๊ณผ ๋์ฐฉ์ ์ผ๋ก ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ
visit[a][b].append((y, x))
visit[y][x].append((a, b))
answer += 1
y, x = a, b
return answer
- ์์ ๊ฑฐ๋ ๋น์ท...
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.04ms, 10.2MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.03ms, 10.3MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.02ms, 10.2MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.11ms, 10.3MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.07ms, 10.2MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.05ms, 10.2MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.03ms, 10.3MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.04ms, 10.3MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.03ms, 10.2MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.04ms, 10.2MB)
ํ
์คํธ 11 ใ ํต๊ณผ (0.06ms, 10.4MB)
ํ
์คํธ 12 ใ ํต๊ณผ (0.10ms, 10.4MB)
ํ
์คํธ 13 ใ ํต๊ณผ (0.09ms, 10.2MB)
ํ
์คํธ 14 ใ ํต๊ณผ (0.06ms, 10.2MB)
ํ
์คํธ 15 ใ ํต๊ณผ (0.05ms, 10.4MB)
ํ
์คํธ 16 ใ ํต๊ณผ (0.30ms, 10.3MB)
ํ
์คํธ 17 ใ ํต๊ณผ (0.19ms, 10.3MB)
ํ
์คํธ 18 ใ ํต๊ณผ (0.37ms, 10.2MB)
ํ
์คํธ 19 ใ ํต๊ณผ (0.20ms, 10.3MB)
ํ
์คํธ 20 ใ ํต๊ณผ (0.19ms, 10.2MB)
- ์ญ์ ๋ฐฐ์ด์ ๋ฏธ๋ฆฌ ๋ง๋ค๊ณ ๊ฐ์ ์ ์ฅํ๊ณ , ๋์ค์ ๋ํ๋ ๋จ์ํ ๋ฐฉ์์ด ๋น ๋ฅธ ๋ฏ...
- ํ์ด์ฌ ์ธ์ด์ ๋ํ ์ดํด๋ ฅ์ด 1 ์์นํ๋ค!
- ์ข๋ง ๊ธฐ๋ค๋ ค๋ผ, ์กฐ๋ง๊ฐ Godot ์์ง์ผ๋ก 1์ธ ๊ฐ๋ฐ ํด์ฃผ๋ง...
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > Python ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค [1์ฐจ] ์บ์ (0) | 2023.02.20 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ์คํฌํธ๋ฆฌ (0) | 2023.02.20 |
ํ๋ก๊ทธ๋๋จธ์ค ํ ์ธ ํ์ฌ (0) | 2023.02.20 |
ํ๋ก๊ทธ๋๋จธ์ค ํผ์ ๋๊ธฐ์ ๋ฌ์ธ (0) | 2023.02.20 |
ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ ฅ๋ง์ ๋๋ก ๋๋๊ธฐ (0) | 2023.02.20 |