10 진수를 거치지 않고 임의의 염기에서 임의의 염기로 변환하는 수학은?

저는 모든 염기에서 임의의 염기로 변환하는 수학을 조사해 왔습니다. 이것은 무엇보다 내 결과를 확인하는 것에 관한 것입니다. mathforum.org에 대한 제 답변이되지만 제가 올바른지 아직 확실하지 않습니다. 나는 더 큰 밑수에서 작은 밑수로 변환하는 것이 괜찮습니다. 왜냐하면 그것은 단순히 첫 번째 숫자를 밑으로 곱하여 다음 숫자 반복을 추가하기 때문입니다. 내 문제는 더 작은 기지에서 더 큰 기지로 변환 할 때 발생합니다. 이렇게 할 때 그들은 당신이 원하는 더 큰 기지를 당신이 가진 더 작은 기지로 변환하는 방법에 대해 이야기합니다. 예를 들어 4 진법에서 6 진법으로 이동하는 경우 숫자 6을 4 진법으로 변환하여 12를 얻어야합니다. 그런 다음 큰 것을 작은 것으로 변환 할 때와 동일한 작업을 수행합니다. 내가 가진 어려움은 다른 기지에있는 숫자가 무엇인지 알아야한다는 것입니다. 그래서 저는 4 진법에 6이 무엇인지 알아야했습니다. 이것은 내 마음에 큰 문제를 만듭니다. 왜냐하면 저는 테이블이 필요하기 때문입니다. 누구든지 더 나은 방식으로 이것을하는 방법을 알고 있습니까?

기본 변환이 도움이 될 것이라고 생각했지만 그 작업을 찾을 수 없습니다. 사이트에서 10 진수를 거치지 않고 기본에서 기본으로 변환 할 수있는 것 같지만 먼저 필요합니다. 첫 번째 숫자를 밑수에서 밑수로 변환하는 방법을 알고 싶습니다. 그것은 좀 무의미합니다.

코멘트를하는 사람들은 문자를 숫자로 변환 할 수 있어야한다고 말합니다. 그렇다면 이미 알고 있습니다. 그러나 내 문제는 아닙니다. 내 문제는 큰 염기를 작은 염기로 변환하려면 먼저 내가 가지고있는 기본 번호를 원하는 기본 번호로 변환해야합니다. 이 과정에서이 염기를 다른 염기로 변환 할 수있는 능력이 있다면 이미 내 문제를 해결했기 때문에 목적을 무효화합니다.

편집 : 염기보다 작거나 같은 염기에서 변환하는 방법을 알아 냈습니다. 10을 10보다 작거나 같은 다른 염기로 변환합니다. 또한 10보다 큰 염기에서 10 이하의 모든 염기로 이동할 수 있습니다. 문제는 10보다 큰 염기에서 10보다 큰 다른 염기로 변환 할 때 시작됩니다. 또는 10보다 작은 기본에서 10보다 큰 기본으로 이동합니다. 코드가 필요하지 않습니다. 코드에 적용 할 수있는 기본 수학 만 있으면됩니다.

코멘트

  • 이 포럼의 주제에 관한 질문입니까?
  • 대상베이스에서 덧셈과 곱셈을 할 수있는 한 절차는 간단합니다. 할 수 있다면 ‘ 그렇지 않다면 ‘ 가능하다고 생각하지 않습니다 ‘.
  • 그리핀은 먼저 많은 학생들이들을 필요가있는 것을 들어야합니다. 숫자는베이스로 표현되지 않고 존재합니다 . 그러면 답은 분명합니다. 주어진 밑수에있는 숫자의 표현 을 숫자로 변환하는 알고리즘이 필요합니다 (즉, stringint) 및 숫자를 가져와 주어진 기수로 표현을 반환하는 알고리즘을 반환합니다.
  • @AndrejBauer CS에 관한 질문입니다. : ‘ 그렇게 표현되지 않더라도 숫자 표현 사이를 변환하는 알고리즘에 대한 질문입니다. [ 관련없는 메모 : 혼란스러운 여러 댓글을 삭제했습니다. Griffin : 질문을 수정하여 업데이트하십시오. 기타 : 채팅 으로 이동하세요. ]
  • @Griffin it ‘는 원래 질문 이후로 오래되었습니다. 답변을 ‘ 찾았기를 바랍니다. 그렇다면 답변을 업데이트하고 수락하거나 귀하의 답변을 게시하는 것이 좋습니다. 그동안 저는 ‘ Google ‘의 Code Jam 아카이브에서 몇 가지 아주 좋은 아이디어 (C ++ 구현에 대해 이야기)를 찾았습니다. 이 문제에 대한 몇 가지 해결책은 매우 창의적입니다. code.google.com/codejam/contest/32003/dashboard

답변

이것은 매우 기본적인 질문 인 것 같으니 조금 강의하면 실례합니다. 여기서 배워야 할 가장 중요한 점은 숫자가 숫자 표현이 아니라는 것입니다 . 숫자는 추상적 인 수학적 객체 인 반면, 숫자 표현은 구체적인 것, 즉 종이에있는 일련의 기호 (또는 계산 메모리의 일련의 비트 또는 숫자를 전달할 때 만들어지는 일련의 소리)입니다. 혼란스러운 점은 숫자를 보지 하지 않고 항상 숫자로 표시된다는 사실입니다. 따라서 숫자가 표현 이라고 생각하게됩니다.

따라서 올바른 질문은 ” 한 염기에서 다른 염기로 변환하는 방법 “이 아니라 오히려 ” 주어진 숫자 문자열로 표시되는 숫자를 어떻게 알 수 있습니까 ” 및 ” 주어진 숫자의 숫자 표현을 어떻게 찾습니까 “.

그러므로 Python에서 숫자 표현을 다음으로 변환하는 함수를 두 개 생성 해 보겠습니다. 숫자, 그리고 반대를위한 다른. 참고 : 함수를 실행하면 물론 Python은 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 표현을 통과하지 않습니다. 우리는 기본 $ b $ 표현을 숫자로 변환 한 다음 숫자를 기본 $ c $ . 숫자는 어떤 표현도 아닙니다 . (사실 컴퓨터는 그것을 어떻게 든 표현해야했고, 전기 신호와 펑키를 사용하여 표현했습니다. 칩에서 일어나는 일이지만 확실히 w 0 “과 1″이 아닙니다.)

댓글

  • 설득하지 않습니다. ‘ 나 100 %. 사실, 당신은 컴퓨터가 플라토닉 수학자가 아니고 알고리즘이 $ b_1 $를베이스로하는 임의의 숫자 시퀀스를베이스 $ b_2 $로 변환 할 수 없기 때문에 숫자를 어떤 표현으로 변환했습니다 (비록 그것이 무엇인지 알 수는 없지만). 콘크리트 기계가 표현할 수있는 시퀀스 만 변환 할 수 있습니다. Python은 매우 유연합니다. C는 그렇게 용서하지 않았을 것입니다. $ b_1 $에서 $ b_2 $로 임의의 문자열을 변환하는 방법을 묻는 것은 완벽하게 유효합니다. 그러나 이는 특정 기본 조합 (예 : 2 <-> 16)을 제외하고는 선형 시간에서만 가능합니다.
  • 질문하는 것은 타당하지만 정답을 찾으려면 숫자가 추상적 인 개체라는 사실을 인식하는 것이 가장 좋습니다.
  • 이는 숫자를 전달 합니다. fromDigits는 10 진법의 숫자를 반환하므로 10 진법을 통해 표현합니다.
  • @anorton : 아니요, 확실히 그렇지 않습니다 . . 파이썬은 화면에 숫자를 기본 10 자리 표현으로 인쇄하지만 숫자 자체는 그렇게 저장되지 않습니다. 내가 건너 뛰려고하는 것은 숫자가 파이썬 내부에서 구현되는 방식이 관련이 없다 는 것입니다. 그것은 중요하지 않습니다. 중요한 것은 숫자처럼 작동한다는 것입니다.
  • 마지막으로 특정 사용 사례, 36 미만의 염기 또는 충분한 고유 기호를 생각 해낼 수있는 인스턴스에 국한되지 않고 모든 염기에 대한 일반적인 솔루션입니다. .

답변

이를 이해하는 가장 좋은 방법은 외계인과 논의하는 것입니다 (최소한 비유).

정의 $ x $는 기본 $ b $의 숫자입니다. 은 $ x $가 $ < b $의 숫자 문자열임을 의미합니다.

자릿수 10010011011은 2 진법, 68416841531은 10 진법, BADCAFE는 16 진법입니다.

이제 모든 사람이 평생 $ q $로 일하는 법을 배우는 QUUX 행성에서 자랐고 $ b $를베이스로하는 당신을 만났다고 가정 해 보겠습니다. 그래서 당신은 나에게 숫자를 보여주고, 나는 무엇을해야합니까? 해석 할 방법이 필요합니다.

정의 해석 가능 다음 공식에 의한 $ b $ 밑수 (참고 : $ b $는 $ q $ 밑수)

$$ \ begin {array} {rcl} [\! [\ epsilon] \!] & = & 0 \\ [\! [\ bar sd] \!] & = & [\! [\ bar s] \!] \ times b + d \ end {array} $$

여기서 $ \ epsilon $은 빈 문자열을 나타내고 $ \ bar sd $는 숫자 $ d $로 끝나는 문자열을 나타냅니다. 이 표기법에 대한 소개는 추가가 추가되는 내 증거 를 참조하세요.

여기서 무슨 일이 발생 했나요? 기본 $ b $에서 숫자가 무엇인지에 대한 이상한 철학없이 기본 $ q $로 해석했습니다.

여기에 대한 핵심은 제가 가지고있는 $ \ times $ 및 $ + $가 기본 $ q $ 숫자에 대해 작동하는 함수라는 것입니다. 이들은 기본 $ q $ 숫자 (문자열)에 대해 재귀 적으로 정의 된 간단한 알고리즘입니다. 자릿수).


내가 실제 숫자보다는 변수를 사용했기 때문에 이것은 약간 추상적 인 것처럼 보일 수 있습니다. 따라서 당신이 기본 13 생물 (기호 $ 0123456789XYZ $ 사용)이고 나는 $ \ alpha \ beta \ gamma \ delta \ rho \ zeta \ xi $ 기호를 사용하여 기본 7 (훨씬 더 합리적 임)에 사용되었습니다.

당신의 알파벳을보고 다음과 같이 표로 만들었습니다.

$$ \ begin {array} {| c | c || c | c || c | c |} \ hline 0 & \ alpha & 1 & \ beta & 2 & \ 감마 \\ 3 & \ delta & 4 & \ rho & 5 & \ zeta \\ 6 & \ xi & 7 & \ beta \ alpha & 8 & \ beta \ beta \\ 9 & \ beta \ gamma & X \ beta \ delta & Y & \ beta \ rho \\ & & Z & \ beta \ zeta & & \\ \ hline \ end {array} $$

그래서 저는 당신이 $ \ beta \ xi $ 밑에서 일하고 있다는 것을 알고 있으며, 어떤 숫자의 밑수 7 숫자도 알고 있습니다 쓰기에 해당합니다.

이제 우리가 물리학에 대해 논의하고 있고 기본 상수 (예 : $ 60Z8 $)에 대해 이야기하고 있다면 이것을 해석해야합니다.

$$ \ begin { 배열} {rcl} [\! [60Z8] \!] & = & \ xi (\ beta \ xi) ^ 3 + \ alpha (\ beta \ xi) ^ 2 + \ beta \ zeta (\ beta \ xi) + \ beta \ beta \\ \ end {array} $$

그래서 저는 $ \를 곱하여 시작합니다. beta \ zeta \ times \ beta \ xi $하지만 이것은 초등학교 용 물건입니다.

Quux 곱셈표

$$ \ begin {array} {| c | cccccc |} \ hline \\ \ times & \ beta & \ gamma & \ delta & \ rho & \ zeta & \ xi \\ \ hline \ beta & \ beta & \ gamma & \ delta & \ rho & \ zeta & \ xi \\ \ gamma & \ gamma & \ rho & \ xi & \ beta \ beta & \ beta \ delta & \ beta \ zeta \\ \ delta & \ delta & \ xi & \ beta \ gamma & \ beta \ zeta & \ gamma \ beta & \ gamma \ rho \\ \ rho & \ rho & \ beta \ beta & \ beta \ zeta & \ gamma \ gamma & \ gamma \ xi & \ delta \ delta \\ \ zeta & \ zeta & \ beta \ delta & \ gamma \ beta & \ gamma \ xi & \ delta \ rho & \ rho \ gamma \\ \ xi & \ xi & \ beta \ zeta & \ gamma \ rho & \ delta \ delta & \ rho \ gamma & \ zeta \ beta \\ \ beta \ alpha & \ beta \ alpha & \ gamma \ alpha & \ delta \ alpha & \ rho \ alpha & \ zeta \ alpha & \ xi \ alpha \\ \ hline \ end {array} $$

$ \ beta \ zeta \ times \ beta \ xi $ 찾기 :

$$ \ begin {array} {ccc} & \ beta & \ ze ta \\ \ times & \ beta & \ xi \\ \ hline & \ xi & \ gamma \\ & \ rho & \\ \ beta & \ zeta & \\ \ hline \ delta & \ beta & \ gamma \\ \ gamma & & \\ \ end {array} $$

그래서 여기까지 왔습니다

$$ \ begin {array} {rcl} [\! [60Z8] \!] & = & \ xi (\ beta \ xi) ^ 3 + \ alpha (\ beta \ xi) ^ 2 + \ beta \ zeta (\ beta \ xi) + \ beta \ beta \\ & = & \ xi (\ beta \ xi) ^ 3 + \ alpha (\ beta \ xi) ^ 2 + \ delta \ beta \ gamma + \ beta \ beta \\ \ end {array} $$

이제 알고리즘을 사용하여 덧셈을 수행해야합니다. 이전에 언급 됨 :

$$ \ begin {array} {ccc} \ delta & \ beta & \ 감마 \\ & \ beta & \ beta \\ \ hline \ delta & \ 감마 & \ delta \\ \ end {array} $$

그래서

$$ \ begin {array} {rcl} [ \! [60Z8] \!] & = & \ xi (\ beta \ xi) ^ 3 + \ alpha (\ beta \ xi) ^ 2 + \ beta \ zeta (\ beta \ xi) + \ beta \ beta \\ & = & \ xi ( \ beta \ xi) ^ 3 + \ alpha (\ beta \ xi) ^ 2 + \ delta \ beta \ gamma + \ beta \ beta \\ & = & \ xi (\ beta \ xi) ^ 3 + \ alpha (\ beta \ xi) ^ 2 + \ delta \ gamma \ delta \\ \ end {array} $ $

이 방법으로 계속하면 $$ [\! [60Z8] \!] = \ zeta \ delta \ xi \ gamma \ rho. $$


In 요약 : 기본 $ q $ 숫자 문자열과 관련하여 내 자신의 숫자 개념을 가지고 있다면 기본 $ b $에서 기본 산술 연산을 기반으로 내 자신의 시스템으로 숫자를 해석 할 수있는 방법이 있습니다. base $ q $.

댓글

  • 음, 구불 구불 한 선이 많았습니다. 그래도 컴퓨터가 그렇게하도록하려면 어떻게해야합니까?
  • @Griffin, 당신이 그 (이상한) 질문을 너무 일찍하는 것 같습니다. 프로그래밍 언어를 선택하고 기본 q 숫자 (숫자 목록으로 표시됨)에 대한 더하기 및 곱하기 알고리즘을 입력 한 다음 기본 b 숫자를 기본 q 숫자로 해석하고 기본 b 숫자를 기본 q 숫자로 해석하는 함수를 정의합니다. 저는 ‘이 모든 것을 설명했습니다.
  • 나는 당신이 묘사하려는 개념을 알고 있습니다. 내 문제는 내 컴퓨터가 ‘ 구불 구불 한 선을 사용할 수 없다는 것입니다.
  • 설명한 내용을 알고 있지만 실제로 적용하는 것이 훨씬 더 어렵습니다. 이러한 숫자를 정의하는 것이 ‘ 쉽지 않다는 것을 알 수 있습니다.
  • 또한 가장 중요한 위치에 알파 숫자를 삭제 한 이유는 무엇입니까? 6 = & xi;이므로 ‘ t 7 = & 알파; & alpha;?

답변

이것은 리팩토링입니다 (Python 3) Andrej “s 코드. 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 

한 고객 기반에서 다른 고객 기반으로 기본 변환을 수행하려면 :

>>> b2b("1120","012","01") "101010" >>> b2b("100","01","0123456789") "4" >>> b2b("100","0123456789ABCDEF","01") "100000000" 

댓글

  • 사이트에 오신 것을 환영하고 기여해 주셔서 감사합니다. 그러나 잘 최적화 된 소스 코드를 생성하는 것은 ‘이 사이트의 실제 내용이 아닙니다. Andrej ‘의 코드는 개념을 명확하게합니다. 이것이 그의 대답에 필요한 것입니다. 그러나 그 이상의 코드를 개선하는 것은 컴퓨터 과학 이 아닌 프로그래밍의 문제입니다. i>.
  • @DavidRicherby 부분적으로 동의합니다.하지만이 기여는 댓글을 작성하기에는 너무 길었고 가장 좋은 장소는 Andrej ‘의 답변 근처에 있습니다. 그래서 ‘ 여기에 게시했습니다. 어쨌든 ‘ 더 낫다고 생각하면 코드 링크가있는 주석으로 변환 할 수 있지만 ‘ 과잉 순수주의?
  • @David에도 불구하고 ‘ s ” 사이트 순수 주의자 ” 이의를 제기하는 경우 관련된 기본이 ” 알파벳 다양한 길이의 임의 기호로 구성되며 일반적인 2-36 자 범위에 국한되지 않습니다. 실제로 바이트 스트림을 기본 256 정수 값의 ” 숫자 “로 간주 할 수 있습니다.

답변

기본 변환의 기본 작업은 @AndrejBauer 답변의 toDigits() 작업입니다. 그러나 그것을 만들기 위해 숫자의 내부 표현에 숫자를 생성 할 필요가 없습니다. 이것은 기본적으로 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 

내부 표현이 숫자이므로 특정 값을 만들어야합니다. 제로 테스트 기능

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] 

댓글

  • 게시 해 주셔서 감사합니다.하지만 우리는 ‘ 코딩 사이트가 아니므로 큰 코드 블록이 아닙니다. ‘ 여기에서 답변으로 적합하지 않습니다. 특히 질문에 ” 코드가 필요하지 않습니다. ‘ 기본 수학 만 있으면됩니다. ”
  • @DavidRicherby 텍스트를 추가하려고했습니다.
  • 감사합니다. 제가 말한 내용에도 불구하고 ‘이 페이지에 많은 코드가 있습니다.
  • @David : FWIW, 이것이 OP에 대한 답이라고 생각합니다. ‘의 질문은 원본의 표현을 중간 형식으로 먼저 변환 한 다음 대상 기반으로 변환하지 않고 두 염기간에 변환하는 방법을 보여주기 때문에 가장 좋습니다.
  • 좋은 시도이지만 d는 여전히 10 진법이므로 n의 작은 부분을 추출하여 10 진법으로 변환 한 다음 원하는 염기로 변환하고 최종 결과로 수집합니다.

답변

컴퓨터 프로그램이 필요하지 않은 염기 변환을 쉽게 수행 할 수있는 방법을 알고 있습니다. 임의의 염기에서 염기 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을 더하십시오.

댓글

  • 2 is so easy to multiply or divide by in any base. 안 함 ‘ 2의 거듭 제곱 (11과 13으로 시작)에서 1 이상인 홀수 염기에 대해 확인하십시오.

답변

중간 염기로의 변환없이 기본 n에서 기본 10으로 변환 할 수 있습니다.

예를 들어, n을 밑이 9로 변환하려면 10을 밑으로 변환하는 알고리즘을 사용하고 “10”을 “9”로 바꿉니다. 다른 기지도 마찬가지입니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다