Logseq/pages/진수변환 알고리즘.md
2026-01-17 22:13:32 +09:00

1.5 KiB

deck:: Logseq/coding tip

  • ◼︎ 진수변환 알고리즘

    • B진수 숫자 N을 10진수로 바꾸기(누적곱)
      • id:: 8273b9c3-1ff0-4a1e-bc35-5d8b7b641f52
        1. 최종 변환 결과 result를 {{c1 0}} 으로 초기화
        2. B진수 숫자 N의 {{c1 가장 왼쪽자리}}부터 한자리씩 순회하면서 진행 ⓐ 순회하며 읽은 값을 {{c1 10진수}}로 바꿈(10 이상의 수는 A=10, B=11 등등), 이 값을 val로 지정 ⓑ result = {{c1 result*B + val}}
        3. 모든 자리수에 대해 수행하고 나면 최종적으로 result에 10진수로 변환된 숫자가 나옴.
    • 10진수 숫자 N을 B진수로 바꾸기(나머지 계산법)
      • id:: d4f39d33-3537-4a10-8845-d88e7c1d4fd6

        1. 최종 변환 결과 result를 배열로 초기화
        2. N이 0이 될 때까지 반복문을 돌림(반복되는 내용을 코드로 작성할 것)
        3. 생성된 result를 뒤집어서 순서대로 읽으면 그것이 최종적으로 B진수로 변환된 숫자.

        위의 적어준 로직을 바탕으로 10진수 숫자 N을 B진수로 바꾸는 코드를 작성하라 #card

        • result = []
          
          while N != 0 :
            	val = N & B
          
              # 11진수 이상일 경우에는 val을 그 진수에 맞는 형태로 바꿔서 넣어야 함
          	# 예를들면 16진수의 경우 val이 10이면 A, 11이면 B 등등
              result.push(val)
          
              N //= B
          
          print("".join(result.reversed()))