PROBLEM.
IDEA
16진수 구구단을 하기 위해서는 1)입력받은 문자열을 10진수로 변환하여 곱셈을 한 후 그 2)결과를 다시 16진수로 변환하여 출력해야한다.
1) 16진수를 10진수로 바꾸기
int() 함수에서 두 번째 인자를 16으로 지정하면 10진수로 변환할 수 있다. 입력 받은 문자열을 16진수로 인식하고 이에 해당하는 정수(10진수)로 변환한다.
2) 10진수를 16진수로 바꾸기
10진수를 16진수로 바꾸는 방법은 3가지가 있다.
① hex() 함수
hex() 함수 안에 변환하고 싶은 10진수를 넣으면 16진수로 변환된 문자열이 반환된다. 그런데 이때 무조건 앞에 16진수를 뜻하는 문자열인 '0x'가 붙기 때문에 이 문제 출력에는 적합하지 않다.
a = hex(11)
print(a)
# 출력 : 0xb
② format() 함수
format() 함수를 사용하면 온전한 16진수만 출력할 수 있고, 대/소문자도 지정할 수 있다. 반환하는 값의 자료형은 문자열이다.
b = format(11,'x')
c = format(11,'X')
print(b)
print(c)
# 출력 :
# b
# B
③ % Formatting
% 뒤에 변환하고자 하는 자료형을 지정하여 변환할 수 있다. 이때, 변환하고자 하는 자료형 별로 입력받을 수 있는 자료형이 다르므로 주의해야한다.
자료형 |
문자 |
입력 자료형 |
정수 |
%d |
수 자료형(정수, 실수) |
실수 |
%f |
수 자료형(정수, 실수) |
문자열 |
%s |
문자열, 수 자료형 |
8진수 |
%o |
정수형 |
16진수 |
%x |
정수형 |
% |
%% |
문자 % |
TRIAL AND ERROR.
k = input()
for i in range(1,16) :
print('%s*%s=%s' % (k,format(i,'X'),format(int('0x'+k,16)*i,'X')))
int() 함수와 % 포멧팅에 대한 이해가 부족해서 어렵게 코드를 작성했다.
SOURCE.
16진수 %포멧팅은 정수형으로 입력받을 수 있기 때문에 굳이 format() 함수로 문자열로 변환할 필요가 없다. 또한 문자열을 정수형으로 바꿀 때도 굳이 '0x'를 붙이지 않아도 두 번째 인자에 16을 지정하면 알아서 16진수로 인식하여 변환해준다!
k = int(input(),16)
for i in range(1,16) :
print('%X*%X=%X' % (k, i, (k*i)))
'''
입력 : B
출력 :
B*1=B
B*2=16
B*3=21
B*4=2C
B*5=37
B*6=42
B*7=4D
B*8=58
B*9=63
B*A=6E
B*B=79
B*C=84
B*D=8F
B*E=9A
B*F=A5
'''
LESSON.
- 16진수를 10진수로 변환하는 법 : int(문자열, 16)
- 10진수를 16진수로 변환하는 법 : %x(X) % 정수형
Reference.
End.
'Algorithm' 카테고리의 다른 글
57th. CodeUp #1084 : [기초-종합] 빛 섞어 색 만들기(설명) (0) | 2020.12.20 |
---|---|
56th. CodeUp #1083 : [기초-종합] 3 6 9 게임의 왕이 되자!(설명) (0) | 2020.12.20 |
54th. CodeUp #1081 : [기초-종합] 주사위를 2개 던지면?(설명) (0) | 2020.12.20 |
53rd. CodeUp #1080 : [기초-종합] 언제까지 더해야 할까? (0) | 2020.12.20 |
52nd. CodeUp #1079 : [기초-종합] 원하는 문자가 입력될 때까지 반복 출력하기 (0) | 2020.12.20 |