[Algorithm๐งฌ] ํคํจ๋ ๋๋ฅด๊ธฐ
์ฝํ ๋ฅผ ์์ํด์ ๊ทธ ๋ ํ์๋ ๋จ ํ๋ฌธ์ ๋ผ...... ๊ธฐ์ตํ๊ณ ์์๋ค. ๊ทธ ๋๋ ๊ฑฐ๋ฆฌ ๊ณ์ฐ์ ๊ฐ์ ์ธ๋ก ์ค์ ์์ผ๋ฉด... ์๋๋ฉด.. ์ด๋ฐ ์์ผ๋ก ๋ถ๊ธฐ๋ฅผ ๋ ๋ณต์กํ๊ฒ ํ์๋๋ฐ, ์ด๋ฒ์ ์ข ๋ ๊น๋ํ๊ฒ ํ ๊ฒ ๊ฐ๋ค.
# ์ด๋ค ์์ผ๋ก ์ ํํ ์ง ๋ฐํํด์ฃผ๋ ํจ์.
def which_hand(left_loca, right_loca, end, main_hand):
# ๊ฑฐ๋ฆฌ๊ฐ ์งง์์ชฝ์ ๋ฐํํ๊ณ
if distance(left_loca, end) < distance(right_loca, end):
return "L"
elif distance(left_loca, end) > distance(right_loca, end):
return "R"
# ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ผ๋ฉด, ์ฃผ ์ฌ์ฉ ์์ ๋ฐํ.
else:
if main_hand == "left":
return "L"
else:
return "R"
# ํ์ฌ ์์น์ ๋๋ฌ์ผ ํ ์์น๋ฅผ ๋ฃ์ผ๋ฉด ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํด์ฃผ๋ ํจ์.
def distance(start, end):
# 1 2 3 ์ด x์ถ 0 1 2 ๋ก
# 1 4 7 ์ด y์ถ 0 1 2 3 ์ผ๋ก ๋งตํ.
start_x = (start+2) % 3
start_y = int((start - 1) / 3)
end_x = (end+2) % 3
end_y = int((end-1) / 3)
# ๊ฑฐ๋ฆฌ๊ฐ ์นธ ๊ธฐ์ค์ด๋ฏ๋ก ์ด๋ ๊ฒ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ค.
dist = abs(start_x - end_x) + abs(start_y - end_y)
return dist
def solution(numbers, hand):
answer = ''
left_loca = 10
right_loca = 12
for num in numbers:
if num == 0:
num = 11
# 1, 4, 7 ์ด๋ฉด left
if num % 3 == 1:
left_loca = num
answer += "L"
# 3, 6, 9 ์ด๋ฉด right
elif num % 3 == 0:
right_loca = num
answer += "R"
# 2, 5, 8, 0 ์ด๋ฉด ๊ณ์ฐ ํ์ ๊ฒฐ์ .
else:
this_hand = which_hand(left_loca, right_loca, num, hand)
# ์์ ์์น๊ฐ ์์ง์ฌ์ผํด์ ์๋ ์๋ ์ถ๊ฐ.
if this_hand == "L":
left_loca = num
else:
right_loca = num
answer += this_hand
return answer
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ([Algorithm๐งฌ] ํคํจ๋ ๋๋ฅด๊ธฐ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@ddosang/Algorithm-ํคํจ๋-๋๋ฅด๊ธฐ์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค