scpc 연습문제 113번. 입력받은 정수를 이진수로 변환하여 1의 갯수를 출력하는 문제
알고리즘문제에서 종종 진수변환을 요구하는 문제가 있다. 오늘 딱정리!
<java>
int num = 12;
String toBinary = Integer.toBinaryString(num); //2진수
String toOctal = Integer.toOctalString(num); //8진수
String toHex = Integer.toHexString(num); //16진수
to[진수]String(int)!! 2진수는 Binary, 8진수는 Octal, 16진수는 Hex 이다.
변환한 결과의 타입은 String이다.
n진수를 다시 10진수로 변환하는 방법은
int binToDec = Integer.parseInt(toBinary, 2); //binary -> decimal
int octalToDec = Integer.parseInt(toOctal, 8); // octal -> decimal
int hexToDec = Integer.parseInt(toHex, 16); // hex -> decimal
Integer.parseInt(진수, n) 를 사용하여 다시 10진수(int)로 변환 가능하다.
<python>
num = 12
toBin = bin(num)
toOct = oct(num)
toHex = hex(num)
java에 비해 비교적 간단하게 bin, oct, hex로 둘러싸주면 된다. java와 마찬가지로 반환값 타입은 string이다.
toBin_pre = format(num, '#b') # 0b1100
toBin = format(num, 'b') # 1100
toOct_pre = format(num, '#o') # 0o14
toOct = format(num, 'o') # 14
toHex_pre = format(num, '#h') # 0xC
toHex = format(num, 'h') # C
이렇게 format을 이용하여 바꿀수도 있다. #과 #없음의 차이는 접두어의 유무 차이이다.
다시 10진수로 반환하는방법은
binToDec = int('0b1100', 2)
octToDec = int('0o14', 8)
hexToDec = int('0xC', 16)
int(접두어+진수, n) 을 사용하면 됩니다.
2진수는 0b, 8진수는 0o, 16진수는 0x!!
'알고리즘' 카테고리의 다른 글
[python]programmers-같은숫자는 싫어 (0) | 2020.08.27 |
---|---|
[python]programmers-2016년 (0) | 2020.08.27 |
[python]직사각형 한점 찾기 (0) | 2020.08.25 |
[python]programmers -K번째수 (0) | 2020.08.25 |
python 입력받기 (0) | 2020.07.29 |