Yet Never Lose Faith

- Good to Great , Jim Collins

How To Preprocess Image Data 자세히보기

Algorithm

55th. CodeUp #1082 : [기초-종합] 16진수 구구단?

Kellyyyy 2020. 12. 20. 20:29

PROBLEM.

 

[기초-종합] 16진수 구구단?

C언어기초100제v1.2 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요.  - 모든 내용

codeup.kr


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.