1. 16진수
만든이 : 웃긴 전골
2. 문제정보
level.goorm.io/exam/43226/16%EC%A7%84%EC%88%98/quiz/1
3. 풀이
1. 2진수로 전환하는 과정이 필요하기에 전환을 한다
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
user_input = int(input())
bit2 = []
count = 0
num = 0
bit16 = []
while user_input: ''' 없어질때까지 홀수면 1을 빼서 2로 나눠준다 아니면 그냥 나눈다'''
if user_input % 2 == 1:
user_input -= 1
bit2.append(1)
else:
bit2.append(0)
user_input /= 2
2. 16진수로 전환을 하자
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
def numbering16(number):
numberdir = {10: 'a', 11: 'b', 12: 'c', 13: 'd', 14: 'e', 15: 'f'}
if number >= 10 :
return numberdir[number]
else:
return number
user_input = int(input())
bit2 = []
count = 0
num = 0
bit16 = []
while user_input:
if user_input % 2 == 1:
user_input -= 1
bit2.append(1)
else:
bit2.append(0)
user_input /= 2
for i in bit2: ''' 진수에 맞게 재곱하여 더하여 넣어준다 '''
num += i*2**count ''' 2를 자리에 맞게 재곱하고 비트에 숫자가 있으면 1 이되어 합쳐지고 아니면 0 이되여 더할게없다'''
if count == 3 : ''' 2에 3승까지 가면 16진수니깐 값을 저장하고 0으로 되돌린다'''
bit16.append(num)
count = 0
num = 0
else:
count += 1
if count != 0: ''' 마즈막에 0 이 아닐경우 num 값이 입력되지않고 남아있기에 넣어주고 끝넨다'''
bit16.append(num)
3. 10이상의 숫자를 문자로 변환하고 출력하자
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
def numbering16(number): ''' 숫자를 문자로 전환해주는 딕션너리 함수를 만든다 '''
numberdir = {10: 'a', 11: 'b', 12: 'c', 13: 'd', 14: 'e', 15: 'f'}
if number >= 10 : '''10 보다 클때만 적으면된다 '''
return numberdir[number]
else:
return number
user_input = int(input())
bit2 = []
count = 0
num = 0
bit16 = []
while user_input:
if user_input % 2 == 1:
user_input -= 1
bit2.append(1)
else:
bit2.append(0)
user_input /= 2
for i in bit2:
num += i*2**count
if count == 3 :
bit16.append(num)
count = 0
num = 0
else:
count += 1
if count != 0:
bit16.append(num)
for i in list(reversed(bit16)):
print(numbering16(i),end="") ''' 함수를 불러 형식에 맞게 출력한다'''
4. 결과
1. 위 풀이의 결과다
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
def numbering16(number):
numberdir = {10: 'a', 11: 'b', 12: 'c', 13: 'd', 14: 'e', 15: 'f'}
if number >= 10 :
return numberdir[number]
else:
return number
user_input = int(input())
bit2 = []
count = 0
num = 0
bit16 = []
while user_input:
if user_input % 2 == 1:
user_input -= 1
bit2.append(1)
else:
bit2.append(0)
user_input /= 2
for i in bit2:
num += i*2**count
if count == 3 :
bit16.append(num)
count = 0
num = 0
else:
count += 1
if count != 0:
bit16.append(num)
for i in list(reversed(bit16)):
print(numbering16(i),end="")
2. hex 함수를 사용하여 편하게 작성 하는 방법이다
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
user_input = hex(int(input()))
print(user_input.replace("0x",""))
'Goorm ide 코딩 문제 > Level 1' 카테고리의 다른 글
[Goorm LEVEL 1] ASCII 코드 (0) | 2021.04.13 |
---|---|
[Goorm LEVEL 1] 몫과 나머지 (0) | 2021.04.13 |
[Goorm LEVEL 1] 거스름돈 (0) | 2021.04.13 |
[Goorm LEVEL 1] Bubble Sort (0) | 2021.04.12 |
[Goorm LEVEL 1] 삼각형의 넓이 (0) | 2021.04.12 |