Baekjoon

[백준] 1550 16진수 (브론즈2) / int(input(), 16))

hellosonic 2023. 3. 22. 22:50

문제요약

나의 코드 및 설명

  • 입력받은 문자열을 리스트에 저장한다.
  • 리스트에 저장된 요소를 역순으로 하나씩 살펴보는 for문을 작성하였다.
    리스트에 저장된 각각의 요소가 영문 A~F(아스키코드 65이상 70이하의 범위) 일 때와, 숫자 일 때, ans에 서로 다른 값이 저장되도록 코드를 작성하였다.
string = list(input())

ans = 0
for i in range(-1,-(len(string))-1,-1):
    if 65<=ord(string[i])<=70:
        ans += (ord(string[i]) - 55) * (16**abs(i+1)) 
    else:
        ans += int(string[i]) * (16**abs(i+1))

print(ans)

다른 코드 및 설명

  • int(input(), 16)) : 입력 값에 16진수를 넣으면, 알아서 10진수로 변환해준다.
    참고로 int(input(), 2)) 는 2진수를 넣으면, 10진수로 변환해준다. 
print(int(input(), 16))

피드백

계속해서 IM등급 대비를 위한 문제만 풀다가 16진수? 뭐지? 하면서 풀어본 문제. int를 통해 10진수로 변환 할 수 있다는 것을 처음 알았다. 풀어보길 참 잘한 것 같다.