๋ฌธ์ ์ค๋ช
์ปดํจํฐ๊ณตํ๊ณผ์์๋ ์ค์ต์ฉ ๋ก๋ด์ ์ด์ฉํด์ ๋ก๋ด ํ๋ก๊ทธ๋๋ฐ์ ํ์ตํฉ๋๋ค. ์ค์ต์ฉ ๋ก๋ด์ ์ ๋ ฅ๋ ๋ช ๋ น์ ๋ฐ๋ผ x์ขํ์ y์ขํ๋ก ํํ๋๋ 2์ฐจ์ ์ขํ ํ๋ฉด ์๋ฅผ ์ด๋ํฉ๋๋ค. ํ๋์ ๋ช ๋ น์ ํ๋์ ๋ฌธ์๋ก ์ฃผ์ด์ง๋ฉฐ ๊ฐ ๋ช ๋ น์ด์ ๋ฐ๋ผ ๋ก๋ด์ด ์ํํ๋ ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ๋ค ์ข ๋ฅ์ ๋๋ค.
- 'R': ๋ก๋ด์ด ์ค๋ฅธ์ชฝ์ผ๋ก 90๋ ํ์ ํฉ๋๋ค.
- 'L': ๋ก๋ด์ด ์ผ์ชฝ์ผ๋ก 90๋ ํ์ ํฉ๋๋ค.
- 'G': ๋ก๋ด์ด ํ ์นธ ์ ์งํฉ๋๋ค.
- 'B': ๋ก๋ด์ด ํ ์นธ ํ์งํฉ๋๋ค.
๋ช
๋ น์ด๋ ๊ฐ๊ฐ์ ๋ช
๋ น๋ค์ด
๋ชจ์ธ ํ๋์ ๋ฌธ์์ด๋ก ์ฃผ์ด์ง๋ฉฐ, ์ฐจ๋ก๋๋ก ์ํ๋ฉ๋๋ค.
๋ก๋ด์ ์ฒ์์ (0, 0) ์์น์ +y ์ถ์ ํฅํ์ฌ ๋์ฌ ์์ต๋๋ค.
๋ค์ ๊ทธ๋ฆผ์ ๋ฒํธ ์์๋๋ก ๋ช ๋ น์ด "GRGLGRG"์ ๊ณผ์ ์ ๋ณด์ฌ์ค๋๋ค.
๋ก๋ด์ ์ ๋ ฅ๋ ๋ช ๋ น์ด๋ฅผ ์์๋๋ก ๋ด๊ณ ์๋ ๋ฌธ์์ด command๊ฐ ์ฃผ์ด์ง๋๋ค. ๋ก๋ด์ด ์ฃผ์ด์ง ๋ช ๋ น์ด๋ค์ ์์๋๋ก ๋ชจ๋ ์ํํ ๋ค ๋์ฐฉํ ์ต์ข ์์น์ ์ขํฏ๊ฐ x, y๋ฅผ ์์๋๋ก ๋ฐฐ์ด์ ๋ด์์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- 1 ≤ commad์ ๊ธธ์ด ≤ 1,000,000
- command๋ 'R', 'L', 'G', 'B'์ผ๋ก ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ ๋๋ค.
- command์ ๋ค์ด์๋ ๋ฌธ์ ํ๋ํ๋๊ฐ ๊ฐ ๋ช ๋ น์ ๋ํ๋ด๋ฉฐ, ๋ฌธ์์ด์ ๋จผ์ ๋ฑ์ฅํ๋ ๋ช ๋ น์ ๋จผ์ ์ํํด์ผ ํฉ๋๋ค.
์ ์ถ๋ ฅ ์
command | result |
"GRGLGRG" | [2, 2] |
"GRGRGRB" | [2, 0] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ๋ก๋ด์ด ์ด๋ํ ์ขํ๋ (0, 0) → (0, 1) → (1, 1) → (1, 0) → (2, 0) ์ ๋๋ค.
ํ์ด
- ์ด๊ฑฐ ๊ฒ์ ๋ง๋ค ๋ ๋ง์ด ์ฐ๋ ๋ฐฉ์์ด๋ผ ์ฌ์ ๋ค.
- ์ํ ๊ฒ์์์ 4๋ฐฉํฅ, 8๋ฐฉํฅ, 16๋ฐฉํฅ, 32๋ฐฉํฅ ๋ฑ๋ฑํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ์
- R/L์
๋ ฅํ๋ฉด ์ด๋ ๋จ์ ๋ฐฐ์ด ๋ณ๊ฒฝ
- ์ด๊ธฐ์ํ : [1,0]
- RRR : [0,1],[-1,0],[0,-1]
- R์ ๋ฐฐ์ด+1
- L์ ๋ฐฐ์ด-1
- ๋ฐฐ์ด ๋์ด๊ฐ๋ฉด ๋ฐ๋์ชฝ์ผ๋ก ๊ฐ๊ธฐ
- G/B์
๋ ฅํ๋ฉด ์ด๋ ๋จ์ ๋งํผ ํ์ฌ ์ขํ์ ๋ํด์ฃผ๊ธฐ
- ๋? ๋ฌด์ง์ฑ ์ฝ๋ฉ ๊ฐ์ฆ์!
- ์ด? ์ ์คํจ?
- ๋? ๋ฌด์ง์ฑ ์ฝ๋ฉ ๊ฐ์ฆ์!
ํ
์คํธ 1
์
๋ ฅ๊ฐ ใ "GRGLGRG"
๊ธฐ๋๊ฐ ใ [2, 2]
์คํ ๊ฒฐ๊ณผ ใ ํ
์คํธ๋ฅผ ํต๊ณผํ์์ต๋๋ค.
์ถ๋ ฅ ใ
G
[1, 0] 0
R
[1, 0] 1
G
[1, 1] 1
L
[1, 1] 0
G
[2, 1] 0
R
[2, 1] 1
G
[2, 2] 1
ํ
์คํธ 2
์
๋ ฅ๊ฐ ใ "GRGRGRB"
๊ธฐ๋๊ฐ ใ [2, 0]
์คํ ๊ฒฐ๊ณผ ใ ์คํํ ๊ฒฐ๊ด๊ฐ [0,2]์ด ๊ธฐ๋๊ฐ [2,0]๊ณผ ๋ค๋ฆ
๋๋ค.
์ถ๋ ฅ ใ
G
[1, 0] 0
R
[1, 0] 1
G
[1, 1] 1
R
[1, 1] 2
G
[0, 1] 2
R
[0, 1] 3
B
[0, 2] 3
- ์๋... ์ด๋ฒ์๋ ํ๋ ฌ ๋ฐ๊ฟ๋จ๋ค ใ
ใ
ใ
- ํ
์คํธ1์ ํต๊ณผํ๋๋ฐ, ํ
์คํธ2๋ ํต๊ณผ๋ฅผ ๋ชป ํด์ ๋ณด๋๊น...
- ์ขํ๋ฅผ ๋ ๋ฐ๋๋ก ํด๋์, ์ฝ๋ ๊ณ ์น๊ธด ์ซ๊ณ ๋ง์ง๋ง์ answer๋ง ๋ค์ง์ด ์ค
- ํ
์คํธ1์ ํต๊ณผํ๋๋ฐ, ํ
์คํธ2๋ ํต๊ณผ๋ฅผ ๋ชป ํด์ ๋ณด๋๊น...
def solution(command):
answer = [0,0]
cmd_mapping = [[1,0],[0,1],[-1,0],[0,-1]]
robot_dir = 0
for c in command:
#print(c)
if c == "R":
robot_dir += 1
robot_dir %= 4
elif c == "L":
robot_dir -= 1
if robot_dir < 0: robot_dir = 3
elif c == "G":
answer = [ai + ri for ai, ri in zip(answer,cmd_mapping[robot_dir])]
elif c == "B":
answer = [ai - ri for ai, ri in zip(answer,cmd_mapping[robot_dir])]
#print(answer, robot_dir)
answer[0],answer[1] = answer[1],answer[0]
return answer
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (275.99ms, 11.6MB)
ํ
์คํธ 2 ใ ํต๊ณผ (210.95ms, 11.4MB)
ํ
์คํธ 3 ใ ํต๊ณผ (110.56ms, 10.5MB)
ํ
์คํธ 4 ใ ํต๊ณผ (165.47ms, 11.1MB)
ํ
์คํธ 5 ใ ํต๊ณผ (221.77ms, 11.4MB)
ํ
์คํธ 6 ใ ํต๊ณผ (436.03ms, 11.8MB)
ํ
์คํธ 7 ใ ํต๊ณผ (287.71ms, 11.9MB)
ํ
์คํธ 8 ใ ํต๊ณผ (274.41ms, 11.9MB)
ํ
์คํธ 9 ใ ํต๊ณผ (297.49ms, 12MB)
ํ
์คํธ 10 ใ ํต๊ณผ (359.95ms, 11.9MB)
- ๊ณ ์์ ์ฝ๋
- ๊น๋ํ๋ค...
def solution(command):
path = [[0,1], [1,0], [0,-1], [-1, 0]]
x = y = d = 0
for i in command:
if i == 'R': d = (d+1)%4
elif i == 'L': d = (d+3)%4
elif i == 'G':
x += path[d][0]
y += path[d][1]
elif i == 'B':
x -= path[d][0]
y -= path[d][1]
return [x,y]
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > Python ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[PCCP ๋ชจ์๊ณ ์ฌ#2] ์นดํ ํ์ฅ (ํ) (0) | 2023.03.11 |
---|---|
[PCCP ๋ชจ์๊ณ ์ฌ#2] ์ ์ ์ฌ์ ๊ต์ก (์ฐ์ ์์ํ) (0) | 2023.03.10 |
[PCCP ๋ชจ์๊ณ ์ฌ#1] ์ด์์ฒด์ (์ฐ์ ์์ํ) (1) | 2023.03.08 |
[PCCP ๋ชจ์๊ณ ์ฌ#1] ์ ์ ๋ฒ์น (์คํ) (0) | 2023.03.07 |
[PCCP ๋ชจ์๊ณ ์ฌ#1] ์ฒด์ก๋ํ (itertools.permutation) (0) | 2023.03.06 |