10진수를 n진수로 변환하기

다음은 233 이란 10진수를 2진수로 변환하는 과정을 나타낸 그림이다.

위 그림을 참조하여 라이브러리를 사용하지 말고 10진수를 n진수로 변환하는 프로그램을 작성하시오.. (단, n의 범위는 2 <= n <= 16)

예)

  • 2진수로 변환 : 23310 --> 111010012
  • 8진수로 변환 : 23310 --> 3518
  • 16진수로 변환 : 23310 --> E916
stack
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

125개의 풀이가 있습니다. 1 / 13 Page

def numeral_system(x):

  n = int(input("which number do you want to use?"))
  answer = '' 

  pool = "0123456789abcdef"

  while x > 0 :
    answer += pool[x % n]
    x = (x // n)

  answer = answer[::-1]
  print(answer)



numeral_system(233)

2017/09/29 19:17

Hyungmin Kang

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
# python 3.6


def base_n(n, base):
    pool = "0123456789ABCDEF"
    rst = list()
    while n:
        rst.insert(0, pool[n % base])
        n = n // base
    return "".join(rst)


print(base_n(233, 2), base_n(233, 8), base_n(233, 16))
# ans: 11101001 351 E9

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
def convert(dec,bit):
    num = ""
    while dec:
        b = dec % bit 
        if b > 10:b = 'ABCDEF'[b - 10]

        dec = int(dec / bit)
        num += str(b)
    return num[::-1]

print(convert(233,2))
print(convert(233,8))
print(convert(233,16))

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
def changeNum(num, target):
    print('10진수:', num)
    arr = ''
    arr1 = '0123456789ABCDEF'
    while True:
        num, tmp = divmod(num, target)
        arr = arr1[tmp] + arr
        if num <=0:
            break

    print(arr)

changeNum(233, 2)
changeNum(233, 8)
changeNum(233, 16)
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("10진수 값 : ");
        int decimalNum = Integer.parseInt(br.readLine());   // 10진수 값
        System.out.print("바꿀 진수 입력 : ");
        int jinsu = Integer.parseInt(br.readLine());        // 바꿀 진수     ex) 2진수
        decimalToBinary(decimalNum, jinsu);
        br.close();
    }
    public static void decimalToBinary(int decimalNum, int jinsu) {
        int mok = 1, namuji = 0;
        StringBuilder sb = new StringBuilder();
        while (mok > 0) {
            mok = decimalNum / jinsu;
            namuji = decimalNum % jinsu;
            if (namuji > 9) {
                switch (namuji) {
                    case 10: sb.append("A"); break;
                    case 11: sb.append("B"); break;
                    case 12: sb.append("C"); break;
                    case 13: sb.append("D"); break;
                    case 14: sb.append("E"); break;
                    case 15: sb.append("F"); break;
                }
            } else {
                sb.append(namuji);
            }
            decimalNum = mok;
        }
        System.out.println("-----------------");
        System.out.println(">>> " + jinsu + "진수 변환 : " + sb.reverse() + "(" + jinsu + ")");
    }
}
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

진법의 변환된 수에서 0이 쭈욱 딸려오는 것을 무시해야 하네요.

function convertBase(base, e) {
  if ( e < 0 || e > 16) return -1;
  const digit = [0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F'];
  let ans = [], tailingZero = true;
  const solve = (base, e) => {
    const num = Math.floor(base / e);
    if (!tailingZero || base % e !== 0) {
      ans.unshift(digit[base % e]);
      tailingZero = false;
    }
    return (num === 0) ? -1 : solve(num, e);
  }
  solve(base, e);
  return ans.join('');
}

console.log(convertBase(51712, 2));
console.log(convertBase(233, 8));
console.log(convertBase(233, 16));
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
print('==============================================')
print('binary_system:2 / octal_num_system:8 / hexadecimal number:16')   
user_input=input('Input hex data: ')
system_input=input('input system: ')
print('==============================================')

a=int(user_input)
si=int(system_input)
def change_num_system(a,si):
    list=[]
    if a<si:
        list.append(str(a))
    else:
        while a>=si:
            if a%si==0:
                list.append(str(0))
            else:
                if a%si==10:
                    list.append('A')
                elif a%si==11:
                    list.append('B')
                elif a%si==12:
                    list.append('C')
                elif a%si==13:
                    list.append('D')
                elif a%si==14:
                    list.append('E')
                elif a%si==15:
                    list.append('F')
                else:
                    list.append(str(int(a)%si))
            a=a/si
            if a<si:
                list.append(str(a))
                print(list)
                break

    list.reverse()
#   print(list)
    print(''.join(list))

change_num_system(a,si)


※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
import java.util.*;

public class DecimalConversion {
    public static String converter(int n, int base) {
        if(n != 0) {
            if(n%base > 9) return converter(n/base,base) + (char) (n%base+55); 
            else return converter(n/base,base) + (char) n%base;
        }
        else return "";
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int base = sc.nextInt();
        System.out.println(converter(n,base));
    }
}
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

좋은 풀이가 엄청 많네요...

dict = {'10' : 'A', '11' : 'B', '12' : 'C', '13' : 'D', '14' : 'E', '15' : 'F'}
def ts(a, n, list = []):
    while a != 0:
        list.append(str(a%n))
        a = a//n

    list = ",".join(list[::-1])
    for a, b in dict.items():
        list = list.replace(a,b)
    return "".join(list.split(','))
※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
package java_tutorial;

import java.util.Scanner;

public class Ten_toOthers {

    public static void main(String[] args) {

            int remain = 0;
            int quot = 1;
            String answer = "";
            Scanner sc = new Scanner(System.in);
            StringBuffer sb = new StringBuffer();

            System.out.print("From : ");
            int from_Num = sc.nextInt();
            System.out.print("To(2~16) : ");
            int to_Num = sc.nextInt();

            System.out.println("");
            System.out.print(to_Num + "진수로 변환 : " + from_Num + "(10) -------> ");

            while(quot>0)
            {
                    quot = from_Num / to_Num;
                    remain = from_Num % to_Num;
                    answer += remain;
                    from_Num = quot;
            }
            sb.append(answer);
            System.out.println(sb.reverse()+ "("+ to_Num + ")");
    }

}

※ 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

풀이 작성

※ 풀이작성 안내
  • 본문에 코드를 삽입할 경우 에디터 우측 상단의 "코드삽입" 버튼을 이용 해 주세요.
  • 마크다운 문법으로 본문을 작성 해 주세요.
  • 풀이를 읽는 사람들을 위하여 풀이에 대한 설명도 부탁드려요. (아이디어나 사용한 알고리즘 또는 참고한 자료등)
  • 작성한 풀이는 다른 사람(빨간띠 이상)에 의해서 내용이 개선될 수 있습니다.
목록으로
코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.

stack x 2
연관 문제

언어별 풀이 현황
전 체 x 125
python x 60
java x 25
javascript x 4
기 타 x 12
cpp x 15
cs x 4
ruby x 1
scala x 2
perl x 1
objectivec x 1