๐ค ์ฝ๋ฉํ
์คํธ ์ค๋น/ํ๋ก๊ทธ๋๋จธ์ค
#ํ๋ก๊ทธ๋๋จธ์ค ํ์ด์ฌ Lv.1 #ํคํจ๋ ๋๋ฅด๊ธฐ
seoyeun
2021. 11. 7. 22:03
๋ฌธ์ ์ค๋ช
: ์์๋๋ก ๋๋ฅผ ๋ฒํธ๊ฐ ๋ด๊ธด ๋ฐฐ์ด numbers, ์ผ์์ก์ด์ธ์ง ์ค๋ฅธ์์ก์ด์ธ ์ง๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด hand๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ ๋ฒํธ๋ฅผ ๋๋ฅธ ์์ง์๊ฐ๋ฝ์ด ์ผ์์ธ ์ง ์ค๋ฅธ์์ธ ์ง๋ฅผ ๋ํ๋ด๋ ์ฐ์๋ ๋ฌธ์์ด ํํ๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑ
๋ฌธ์ ํ์ด
- numbers ๋ฐฐ์ด์์ 1,4,7 = 'L', 3,6,9 = 'R'๋ก ๊ฒฐ๊ณผ๊ฐ ํ์
- ์ด๋ค์ ์ ์ธํ 2,5,8,0์ด ๋์ฌ ๋ 'L'๊ณผ 'R'์ ์ด๋ป๊ฒ ๊ตฌํ ๊ฒ์ธ๊ฐ๋ฅผ ์๊ฐํด์ผ ํจ.
- ํคํจ๋๋ฅผ {key:value} ํํ์ธ dictionary ์๋ฃํ์ ์ฌ์ฉํ์ฌ ์ขํ๊ฐ์ผ๋ก ๋ง๋ค๊ธฐ
- ๋ค์ ๋๋ฅผ ์ซ์๋ฅผ dictionary์ key๋ก ํธ์ถํด์ ์ขํ๋ฅผ ๋ฐ๊ณ
- ํด๋น ์ขํ๋ฅผ ์ด์ฉํ์ฌ ๋งจํํ ๊ฑฐ๋ฆฌ ์ธก์ ๋ฒ์ ๊ณต์์ธ |x1-y1|+|x2-y2|๋ฅผ ํตํด์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ค
๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๋ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ์ํ์ ์ขํ๋ก ์๊ฐํ์ฌ ๊ฑฐ๋ฆฌ ๊ณ์ฐ์ ๋งจํํ๊ฑฐ๋ฆฌ ์ธก์ ๋ฐฉ๋ฒ ์ด์ฉ
def solution(numbers, hand):
answer = ''
key_dic = { 1: [0, 0], 2: [0, 1], 3: [0, 2],
4: [1, 0], 5: [1, 1], 6: [1, 2],
7: [2, 0], 8: [2, 1], 9: [2, 2],
'*':[3, 0], 0: [3, 1], '#': [3, 2]
}
left = [1,4,7]
right = [3,6,9]
lhand = '*'
rhand = '#'
for i in numbers:
if i in left:
answer += 'L'
lhand = i
elif i in right:
answer += 'R'
rhand = i
else : # 2, 5, 8, 0์ ๋๋ฅด๋ ๊ฒฝ์ฐ
curPos = key_dict[i]
lPos = key_dict[lhand]
rPos = key_dict[rhand]
# ์ขํ ๊ฑฐ๋ฆฌ ๊ณ์ฐ
ldist = abs(curPos[0]-lPos[0]) + abs(curPos[1]-lPos[1])
rdist = abs(curPos[0]-rPos[0]) + abs(curPos[1]-rPos[1])
if ldist < rdist : # ์ผ์์ด ๋ ๊ฐ๊น์ด ๊ฒฝ์ฐ
answer += 'L'
lhand = i
elif ldist > rdist : # ์ค๋ฅธ์์ด ๋ ๊ฐ๊น์ด ๊ฒฝ์ฐ
answer += 'R'
rhand = i
else : # ๋ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ
if hand == 'left' : # ์ผ์์ก์ด ๊ฒฝ์ฐ
answer += 'L'
lhand = i
else : # ์ค๋ฅธ์์ก์ด ๊ฒฝ์ฐ
answer += 'R'
rhand = i
return answer
๐ค ์ถ๊ฐ ์ ํด๋ฆฌ๋์ธ ๊ฑฐ๋ฆฌ์ ๋งจํํ ๊ฑฐ๋ฆฌ์ ๋ํ์ฌ
์ ํด๋ฆฌ๋์ธ ๊ฑฐ๋ฆฌ d = ๋ฃจํธ ((a1-b1)^2 + (a2-b2)^2), ๋งจํํ ๊ฑฐ๋ฆฌ d = |a1-b1| + |a2-b2|
# ์ ํด๋ฆฌ๋์ธ ๊ฑฐ๋ฆฌ
def euclidean_distance(pt1, pt2):
distance = 0
for i in range(len(pt1)):
distance += (pt1[i] - pt2[i]) ** 2
return distance ** 0.5
# ๋งจํํ ๊ฑฐ๋ฆฌ
def manhattan_distance(pt1, pt2):
distance = 0
for i in range(len(pt1)):
distance += abs(pt1[i] - pt2[i])
return distance