๋๋ ์ด๋ค ๊ธฐ์ด์์ ์ด๋ค ๊ธฐ์ด๋ก ๋ณํํ๋ ๊ฒ์ ๋ํ ์ํ์ ์กฐ์ฌํด ์์ต๋๋ค. ์ด๊ฒ์ ๋ฌด์๋ณด๋ค ๋ด ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ ๊ฒ์ ๋๋ค. mathforum.org์์ ๋ด ๋ต๋ณ์ผ๋ก ๋ณด์ด๋ ๊ฒ์ ์ฐพ์์ง๋ง ์ฌ์ ํ ์ฌ๋ฐ๋ฅธ์ง ํ์คํ์ง ์์ต๋๋ค. ํฐ ์ซ์์์ ์์ ์ซ์๋ก ๋ณํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋ํ๋ฉด ๋จ์ํ ์ฒซ ์๋ฆฟ์๋ฅผ ๊ธฐ๋ณธ ์ซ์๋ก ๊ณฑํ๊ธฐ ๋๋ฌธ์ ๋ค์ ์๋ฆฟ์ ๋ฐ๋ณต์ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค. ์์๋ฒ ์ด์ค์์ ๋ ํฐ๋ฒ ์ด์ค๋ก ๋ณํ ํ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด ์์ ์ ์ํ ํ ๋ ์ํ๋ ๋ ํฐ๋ฒ ์ด์ค๋ฅผ ๋ ์์๋ฒ ์ด์ค๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐ 4์์ ๋ฐ 6์ผ๋ก ๊ฐ๋ ค๋ฉด ์ซ์ 6์ ๋ฐ 4๋ฅผ 12๋ก ๋ฐ๊พธ๋ฉด๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ํฐ ๊ฒ์์ ์์ ๊ฒ์ผ๋ก ๋ฐ๊ฟ ๋์ ๋๊ฐ์ ์ผ์ํฉ๋๋ค. ๋ด๊ฐ ๊ฐ์ง ์ด๋ ค์์ ํ ์ซ์๊ฐ ๋ค๋ฅธ ์ซ์์ ๋ฌด์์ธ์ง ์์์ผํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋์ 6์ด 4์ ๋ฌด์์ธ์ง ์์์ผ ํ ํ์๊ฐ ์์ต๋๋ค. ํ ์ด๋ธ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๋ง์์ ํฐ ๋ฌธ์ ๊ฐ ์๊น๋๋ค. ๋ ๋์ ๋ฐฉ๋ฒ์ผ๋ก ์ด๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ ์๋ ์ฌ๋์ด ์์ต๋๊น?
๊ธฐ๋ณธ ์ ํ์ด ๋์์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง ํด๋น ์์ ์ ์ฐพ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ดํธ์์ 10์ ๊ฑฐ์น์ง ์๊ณ ๊ธฐ๋ณธ์์ ๊ธฐ๋ณธ์ผ๋ก ๋ณํ ํ ์์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ๋จผ์ ์ฒซ ๋ฒ์งธ ์ซ์๋ฅผ ๊ธฐ๋ณธ์์ ๊ธฐ๋ณธ์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ์์์ผํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ฌด์๋ฏธํฉ๋๋ค.
์ฃผ์๊ฐ๋ค์ ๋ฌธ์๋ฅผ ์ซ์๋ก ๋ณํ ํ ์ ์์ด์ผํ๋ค๊ณ ๋งํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๋ฏธ ์๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ด ๋ฌธ์ ๊ฐ ์๋๋๋ค. ๋ด ๋ฌธ์ ๋ ํฐ ์ผ๊ธฐ๋ฅผ ์์ ์ผ๊ธฐ๋ก ๋ณํํ๊ธฐ ์ํด ๋จผ์ ๋ด๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ธฐ๋ณธ ๋ฒํธ๋ฅผ ์ํ๋ ๊ธฐ๋ณธ ๋ฒํธ๋ก ๋ณํํด์ผํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด ์์ ์ ์ํ ํ ๋ ์ด๋ฌํ ๊ธฐ๋ณธ์ ๋ค๋ฅธ ๊ธฐ๋ณธ์ผ๋ก ๋ณํ ํ ์ ์์ผ๋ฉด ์ด๋ฏธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ๋๋ฌธ์ ๋ชฉ์ ์ ๋ฌดํจํํฉ๋๋ค.
ํธ์ง : 10 ์ดํ์ ๊ธฐ์ง์์ 10 ์ดํ์ ๋ค๋ฅธ ๊ธฐ์ง๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ์์ ๋์ต๋๋ค. ๋ํ 10๋ณด๋ค ํฐ ๊ธฐ์ง์์ 10 ์ดํ์ ๊ธฐ์ง๋ก ๊ฐ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ 10๋ณด๋ค ํฐ ๊ธฐ๋ณธ์์ 10๋ณด๋ค ํฐ ๋ค๋ฅธ ๊ธฐ๋ณธ์ผ๋ก ๋ณํ ํ ๋ ์์๋ฉ๋๋ค. ๋๋ 10๋ณด๋ค ์์ ๊ธฐ๋ณธ์์ 10๋ณด๋ค ํฐ ๊ธฐ๋ณธ์ผ๋ก ์ด๋ํ๋ฉด ์ฝ๋๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์ฝ๋๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์ฝ๋์ ์ ์ฉ๋ฉ๋๋ค.
๋ต๋ณ
์ด๊ฒ์ ๋์๊ฒ ๋งค์ฐ ๊ธฐ๋ณธ์ ์ธ ์ง๋ฌธ์ผ๋ก ๋ณด์ ๋๋ค. ์กฐ๊ธ๋ง ๊ฐ์ํ๋ฉด ์ค๋กํฉ๋๋ค. ์ฌ๊ธฐ์ ๋ฐฐ์ธ ์ ์ ์ซ์๊ฐ ์ซ์๊ฐ ์๋๋ผ๋ ๊ฒ ์ ๋๋ค. ์ซ์๋ ์ถ์์ ์ธ ์ํ์ ๊ฐ์ฒด ์ธ ๋ฐ๋ฉด ์ซ์ ํํ์ ๊ตฌ์ฒด์ ์ธ ๊ฒ, ์ฆ ์ข ์ด์ ์ผ๋ จ์ ์ฌ๋ณผ (๋๋ ๊ณ์ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ผ๋ จ์ ๋นํธ ๋๋ ์ซ์๋ฅผ ์ ๋ฌํ ๋ ๋ง๋๋ ์ผ๋ จ์ ์ฌ์ด๋)์ ๋๋ค. ๋น์ ์ ํผ๋ํ๋ฉด ๊ฒฐ์ฝ ์ฌ์ค์ ๋๋ค ๋ณผ ์ ์์ง๋ง, ํญ์ ๊ทธ ์๋ฆฌ ํํ์. ๋ฐ๋ผ์ ์ซ์ ๊ฐ ํํ ์ด๋ผ๊ณ ์๊ฐํ๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ฌ๋ฐ๋ฅธ ์ง๋ฌธ์ โํ๋ฒ ์ด์ค์์ ๋ค๋ฅธ๋ฒ ์ด์ค๋ก ๋ณํํ๋ ๋ฐฉ๋ฒโ์ด ์๋๋ผ โ์ด๋ค ์ซ์๊ฐ ์ฃผ์ด์ง ์๋ฆฟ์ ๋ฌธ์์ด๋ก ํ์๋๋์ง ์ด๋ป๊ฒ ์ ์ ์์ต๋๊น?โ์ โ ์ฃผ์ด์ง ๋ฒํธ โ.
์ ์ด์ ํ์ด์ฌ์์ ์ซ์ ํํ์ ์ซ์๋ก ๋ณํํ๋ ํจ์์ ๋ฐ๋์ ์์ ์์ํ ํจ์๋ฅผ ๋ง๋ค์ด ๋ด ์๋ค. ์ฐธ๊ณ : ์ฐ๋ฆฌ๊ฐ ๊ธฐ๋ฅ์ ์คํํ ๋ ํ์ด์ฌ ์ฝ์ค์ ๊ฒ์ ๋๋ค ํ๋ฉด์ ์ธ์ ๊ฐ๋ฒ ์ด์ค (10)์์์ดํ์ง๋ง ์๊ฐ์ด๊ฐ ์์ต๋๋ค ํ์ง ์ปดํจํฐ (๊ทธ๋ ์ง ์์)๋ฒ ์ด์ค (10)์ ์ซ์๋ฅผ ์ ์งํ๊ณ ์์์ ์๋ฏธํ๋ค. ์ปดํจํฐ๊ฐ ์ซ์๋ฅผ ๋ํ๋ด๋ ๋ฐฉ์๊ณผ ๋ ๊ด๋ จ ์ด ์์ต๋๋ค .
def toDigits(n, b):
"""Convert a positive number n to its digit representation in base b."""
digits = []
while n > 0:
digits.insert(0, n % b)
n = n // b
return digits
def fromDigits(digits, b):
"""Compute the number given by digits in base b."""
n = 0
for d in digits:
n = b * n + d
return n
์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ํ ์คํธํ์ :
>>> toDigits(42, 2)
[1, 0, 1, 0, 1, 0]
>>> toDigits(42, 3)
[1, 1, 2, 0]
>>> fromDigits([1,1,2,0],3)
42
๋ณํ ๊ธฐ๋ฅ์ผ๋ก ๋ฌด์ฅ ํ ๋ฌธ์ ๋ ์ฝ๊ฒ ํด๊ฒฐ๋ฉ๋๋ค.
def convertBase(digits, b, c):
"""Convert the digits representation of a number from base b to base c."""
return toDigits(fromDigits(digits, b), c)
์ํ:
>>> convertBase([1,1,2,0], 3, 2)
[1, 0, 1, 0, 1, 0]
์ฐธ๊ณ : ์ฐ๋ฆฌ๋ ๊ธฐ๋ณธ 10 ํํ์ ํต๊ณผ ํ์ง ๋ชปํ์ต๋๋ค ! ๊ธฐ๋ณธ ํํ์ ์ซ์ ๋ก ๋ณํ ํ ๋ค์ ์ซ์๋ฅผ ๊ธฐ๋ณธ . ๊ทธ ์ซ์๋ ํํ ๋์ง ์์๋ค . (์ค์ ๋ก ์ปดํจํฐ๋ ์ปดํจํฐ๋ฅผ ์ด๋ป๊ฒ ๋ ํํํด์ผํ์ผ๋ฉฐ ์นฉ์์ ๋ฐ์ํ๋ ์ ๊ธฐ ์ ํธ์ ํํค ํ ๋ฌผ๊ฑด์ ์ฌ์ฉํ์ฌ ์ปดํจํฐ๋ฅผ ํํํ์ง๋ง ๋ถ๋ช ํ 0๊ณผ 1์ ์๋ ์์ต๋๋ค.)c
bc
๋ต๋ณ
๋๋ ์ด๊ฒ์ ์ดํดํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์ธ๊ณ์ธ (์ ์ด๋ ๋น์ ๋ก์)๊ณผ ํ ๋ก ํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ ์ ๋ ๊ธฐ๋ณธ ์ ์ซ์ ์ ๋๋ค. ๋ ์ซ์ ์ ๋ฌธ์์ด ์์ ์๋ฏธํฉ๋๋ค .
xb
x
<b
์์ ์ซ์ 10010011011์ ๋ฐ์ด 2 ์ธ ์ซ์์ด๊ณ , ๋ฌธ์์ด 68416841531์ ๋ฐ์ด 10 ์ธ ์ซ์์ด๋ฉฐ, BADCAFE๋ ๋ฐ์ด 16 ์ธ ์ซ์์ ๋๋ค.
์ด์ ๋๋ ๋ชจ๋ ์ฌ๋์ด ํ์ ๋์ ์์ ์ผํ๋๋ก ๊ฐ๋ฅด์น๋ ํ์ฑ QUUX์์ ์๋๊ณ ๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ๋ ๋น์ ์ ๋ง๋๋ค๊ณ ๊ฐ์ ํด๋ณด์ญ์์ค . ์ซ์๋ฅผ ๋ณด์ฌ ์ฃผ๋ฉด ์ด๋ป๊ฒํด์ผํฉ๋๊น? ๊ทธ๊ฒ์ ํด์ํ๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
qb
์ ์ ๋๋ ๋ค์ ๊ณต์์ ์ํด ๊ธฐ์ ์๋ฅผ ํด์ ํ ์์๋ค (์ฐธ๊ณ : ๋ ๊ธฐ์ ์ ์์ด๋ค )
bb
q
์ฌ๊ธฐ์ ์ ๋น ๋ฌธ์์ด์ ๋ํ๋ด๊ณ ๋ ์ซ์ ๋๋๋ ๋ฌธ์์ด์ ๋ํ๋ ๋๋ค . ์ด ํ๊ธฐ๋ฒ์ ๋ํ ์ถ๊ฐ ์ฌํญ์ด ์ถ๊ฐ๋์๋ค๋ ๋ด ์ฆ๊ฑฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค .
ฯตsยฏd
d
์ฌ๊ธฐ์ ๋ฌด์จ ์ผ์ด ์์์ต๋๊น? ๋ฒ ์ด์ค ์ซ์๋ฅผ ์ฃผ์๊ณ ์ซ์๊ฐ ์ค์ ๋ก ๋ฌด์์ธ์ง์ ๋ํ ์ด์ํ ์ฒ ํ์์ด ๋ฒ ์ด์ค ๋ก ํด์ํ์ต๋๋ค .
bq
ํค ์ด๊ฒ ์ ํต์ฌ์ ์ ๊ฐ ๊ธฐ๋ณธ ์ซ์ ์์ ์๋ํ๋ ํจ์๋ผ๋ ๊ฒ ์ ๋๋ค. ๊ธฐ๋ณธ ์ซ์ (๋ฌธ์์ด)์ ์ฌ๊ท ์ ์ผ๋ก ์ ์ ๋ ๊ฐ๋จํ ์๊ณ ๋ฆฌ์ฆ ์ ๋๋ค.
ร+
q
q
์ ์ฒด์ ์ผ๋ก ์ค์ ์ซ์๊ฐ ์๋ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฝ๊ฐ ์ถ์์ ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ณธ 13 ์๋ฌผ (๊ธฐํธ )์ด๊ณ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ 7์ ๋ฐ ์ต์ ๊ฐ์ ํด ๋ด ์๋ค .
0123456789XYZฮฑฮฒฮณฮดฯฮถฮพ
๊ทธ๋์ ๋๋ ๋น์ ์ ์ํ๋ฒณ์ ๋ณด์์ต๋๋ค.
๊ทธ๋์ ๋๋ ๋น์ ์ด base ์์ ์ผํ๋ค๋ ๊ฒ์ ์๊ณ ์์ผ๋ฉฐ , ๋น์ ์ด ์ด ์ด๋ค ์ซ์๊ฐ ์ด๋ค base 7 ์ซ์์ ํด๋นํ๋์ง ์๊ณ ์์ต๋๋ค.
ฮฒฮพ๋ฌผ๋ฆฌํ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ๊ธฐ๋ณธ ์์ (์ : )์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๋ค๋ฉด ์ด๊ฒ์ ํด์ํด์ผํฉ๋๋ค.
60Z8
๊ทธ๋์ ๋๋ ๋ฅผ ๊ณฑํ๋ ๊ฒ์ผ๋ก ์์ ํ์ง๋ง ์ด๊ฒ์ ๋์๊ฒ ์ด๋ฑํ๊ต ๋ฌผ๊ฑด์ ๋๋ค.
ฮฒฮถรฮฒฮพQuux ๊ณฑ์ ํ
๊ทธ๋์ ์ฐพ์ ๋ด๊ฐ ํ ์ :
ฮฒฮถรฮฒฮพ
๊ทธ๋์ ๋๋ ์ด๊ฒ์ ๋ฉ๋ฆฌ ๊ฐ์ง๊ณ ์๋ค.
์ด์ ์ด์ ์ ์ธ๊ธ ํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์ถ๊ฐ๋ฅผ ์ํํด์ผํฉ๋๋ค.
๊ทธ๋์
์ด ๋ฐฉ๋ฒ์ ๊ณ์ํ๋ฉด
์์ฝ : ๊ธฐ๋ณธ ์๋ฆฟ์ ๋ฌธ์์ด ์ธก๋ฉด์์ ์ซ์์ ๋ํ ์์ฒด ๊ฐ๋ ์ด ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ฐ์ ๊ธฐ๋ณธ ์ฐ์ฐ-๊ธฐ๋ณธ ์์ ์๋ํ๋ ๊ธฐ๋ณธ ์ฐ์ ์ฐ์ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ๋ณธ ์์ ์์ฒด ์์คํ ์ผ๋ก ์ซ์๋ฅผ ํด์ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค .b q
qb
q
๋ต๋ณ
์ด๊ฒ์ Andrej ์ฝ๋ ์ ๋ฆฌํฉํ ๋ง (Python 3) ์ผ๋ฟ ์ ๋๋ค. Andrej์ ์ฝ๋ ๋ฒํธ๋ ์ซ์ ๋ชฉ๋ก (์ค์นผ๋ผ)์ ํตํด ํ์๋๋ ๋ฐ๋ฉด ๋ค์ ์ฝ๋ ๋ฒํธ๋ ์ฌ์ฉ์ ์ ์ ๋ฌธ์์ด ์์ ๊ฐ์ ธ์จ ๊ธฐํธ ๋ชฉ๋ก์ ํตํด ํ์๋ฉ๋๋ค .
def v2r(n, base): # value to representation
"""Convert a positive number to its digit representation in a custom base."""
b = len(base)
digits = ''
while n > 0:
digits = base[n % b] + digits
n = n // b
return digits
def r2v(digits, base): # representation to value
"""Compute the number represented by string 'digits' in a custom base."""
b = len(base)
n = 0
for d in digits:
n = b * n + base[:b].index(d)
return n
def b2b(digits, base1, base2):
"""Convert the digits representation of a number from base1 to base2."""
return v2r(r2v(digits, base1), base2)
์ฌ์ฉ์ ์ ์ ๊ธฐ์ค์์ ๊ฐ์ ํํ์ผ๋ก ๋ณํํ๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค.
>>> v2r(64,'01')
'1000000'
>>> v2r(64,'XY')
'YXXXXXX'
>>> v2r(12340,'ZABCDEFGHI') # decimal base with custom symbols
'ABCDZ'
ํํ (์ฌ์ฉ์ ์ ์ ๊ธฐ์ค)์์ ๊ฐ์ผ๋ก ๋ณํ์ ์ํํ๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค.
>>> r2v('100','01')
4
>>> r2v('100','0123456789') # standard decimal base
100
>>> r2v('100','01_whatevr') # decimal base with custom symbols
100
>>> r2v('100','0123456789ABCDEF') # standard hexadecimal base
256
>>> r2v('100','01_whatevr-jklmn') # hexadecimal base with custom symbols
256
ํ custome base์์ ๋ค๋ฅธ custome base๋ก ๊ธฐ๋ณธ ๋ณํ์ ์ํํ๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค.
>>> b2b('1120','012','01')
'101010'
>>> b2b('100','01','0123456789')
'4'
>>> b2b('100','0123456789ABCDEF','01')
'100000000'
๋ต๋ณ
๊ธฐ๋ณธ ๋ณํ์ ๊ธฐ๋ณธ toDigits()
์กฐ์์ @AndrejBauer answer ์ ์กฐ์์
๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ง๋ค๊ธฐ ์ํด ์ซ์์ ๋ด๋ถ ํํ์์ ์ซ์๋ฅผ ๋ง๋ค ํ์๊ฐ ์์ต๋๋ค.์ด ์ซ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ 2 ํํ์ผ๋ก ๋ณํ๋ฉ๋๋ค. ์๋ ๊ธฐ๋ณธ ํํ์ผ๋ก ํ์ํ ์กฐ์์ ์ํ ํ ์ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ๋ฐ๋ณต์ ์ธ ๋ชจ๋๋ก ๋ถํ ์ฐ์ฐ์ ์ํํ๋ ๊ฒ์ ๋๋ค
def convertBase(n,original_base,destination_base):
digits = []
while not is_zero(n):
digits.insert(0,modulo_div(n,original_base,destination_base))
return digits
๋ด๋ถ ํํ์ด ์ซ์์ด๋ฏ๋ก 0์ ํ ์คํธํ๊ธฐ ์ํด specilaised ํจ์๋ฅผ ๋ง๋ค์ด์ผํฉ๋๋ค
def is_zero(n):
for d in n:
if d != 0:
return False
return True
๊ฒฐ๊ตญ ์ฐ๋ฆฌ๋ ํ๊ต์์ ๋ฐฐ์ด๋๋ก ๋ชฉ์ ์ง๋ณ๋ก ํ์ค ๊ตฌ๋ถ ์ธ modulo_div ์ฐ์ฐ์ ๋ง๋ค์ด์ผํฉ๋๋ค.
def modulo_div(n,original_base,destination_base):
carry = 0
for i in range(len(n)):
d = n[i]
d+=original_base*carry
carry = d%destination_base
d=(d//destination_base)
n[i] = d
#print(i,d,carry)
return carry
์ฝ๋๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ๋ ํ ์คํธ ๊ฒ์ฌ ๋งํ๋ฉด๋ฉ๋๋ค.
print(convertBase([1,1,2,0], 3, 2))
#[1, 0, 1, 0, 1, 0]
print(convertBase([1, 0, 1, 0, 1, 0], 2, 3))
#[1, 1, 2, 0]
๋ต๋ณ
์ปดํจํฐ ํ๋ก๊ทธ๋จ์ด ํ์์๋ ๊ธฐ๋ณธ ๋ณํ์ ์ํํ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๋ค. ๊ทธ๊ฒ์ ์ด๋ค๋ฒ ์ด์ค์์๋ฒ ์ด์ค 2๋ก ๋๋ ๊ทธ ๋ฐ๋๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ ๋ค์ ๋จผ์ ์ฒซ ๋ฒ์งธ๋ฒ ์ด์ค์์๋ฒ ์ด์ค 2๋ก ๋ณํ ํ ๋ค์๋ฒ ์ด์ค 2์์ ๋ค๋ฅธ๋ฒ ์ด์ค๋ก ๋ณํํ์ฌ ํ๋ฒ ์ด์ค์์ ๋ค๋ฅธ๋ฒ ์ด์ค๋ก ์ปค๋ฒํ๋ ๊ฒ์ ๋๋ค. 2๋ ์ด๋ค ์ผ๊ธฐ์์๋ ๊ณฑํ๊ฑฐ๋ ๋๋๊ธฐ๊ฐ ๋งค์ฐ ์ฝ์ต๋๋ค.
์ด๋ค ๊ธฐ์๋ฅผ ๊ธฐ์ 2๋ก ๋ณํํ๋ ค๋ฉด, ๋น์ ์ดํด์ผ ํ ์ผ์ ์ด๋ค ์ซ์์ ๋ํด์๋, ๋น์ ์ด ๊ธฐ์ 2 ํ๊ธฐ๋ฒ์ ์ทจํ๊ณ 0์์ ์์ํ ๋ค์ ๊ฐ ์ซ์์ ๋ํด ๊ทธ ์๋ฆฌ๊ฐ 0์ด๊ณ ํด๋น ์ซ์๊ฐ 1 ์ธ ๊ฒฝ์ฐ 1์ ๋ํ๋ ๊ฒ๋ณด๋ค ๋ ๋ฐฐ๋ก ์ฆ๊ฐํ๋ฉด ํด๋น ์ซ์ ์์ฒด์ ๋๋ฌํฉ๋๋ค. ์ด์ ์ด๋ค ๋ฐ์์ ํด๋น ์ซ์๊ฐ ์ฃผ์ด์ง๋ฉด ํด๋น ๋ฐ์์ 2๋ฅผ ๋๋์ด ๋ชซ๊ณผ ๋๋จธ์ง๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋๋จธ์ง๊ฐ 1์ด๋ฉด ๋ง์ง๋ง ์ด์ง์๋ 1์ด๊ณ ๋๋จธ์ง๊ฐ 0์ด๋ฉด ๋ง์ง๋ง ์ด์ง์๋ 0์ ๋๋ค. ๋ค์ 2๋ก ๋๋๋๋ค. ๋๋จธ์ง๊ฐ 1์ด๋ฉด ๋ ๋ฒ์งธ ๋ง์ง๋ง ์ซ์๋ 1์ด๊ณ ๋๋จธ์ง๊ฐ 0์ด๋ฉด ๋ ๋ฒ์งธ ๋ง์ง๋ง ์ซ์๋ 0์ด๋ฉฐ ๋ชซ์ด 0์ด ๋ ๋๊น์ง ๊ณ์๋ฉ๋๋ค.
๊ธฐ๋ณธ 2์์ ๊ธฐ๋ณธ์ผ๋ก ๋ณํํ๋ ค๋ฉด ํด๋น ๊ธฐ๋ณธ์์ 0๋ถํฐ ์์ํ ๋ค์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ ๊ฐ ์ด์ง ์ซ์์ ๋ํด ๊ทธ ์ซ์๊ฐ 0์ด๋ฉด ๋ ๋ฐฐ ์ซ์๋ฅผ ๋ ๋ฒ ๋๋ฅธ ๋ค์ 1์ ๋ ๋ฒ ์ถ๊ฐํ์ญ์์ค. ํด๋น ์ซ์๊ฐ 1 ์ธ ๊ฒฝ์ฐ ๋ฐ
๋ต๋ณ
์ผ๋ถ ์ค๊ฐ๋ฒ ์ด์ค๋ก ๋ณํํ์ง ์๊ณ ๋ฒ ์ด์ค n์์๋ฒ ์ด์ค 10์ผ๋ก ๋ณํ ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด,๋ฒ ์ด์ค n์์๋ฒ ์ด์ค 9๋ก ๋ณํํ๋ ค๋ฉด๋ฒ ์ด์ค 10์ผ๋ก ๋ณํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ "10"์ "9"๋ก ๋ฐ๊ฟ๋๋ค. ๋ค๋ฅธ ๊ธฐ์ง์์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.