문제요약
나의 코드 및 설명
- 입력받은 문자열을 리스트에 저장한다.
- 리스트에 저장된 요소를 역순으로 하나씩 살펴보는 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진수로 변환 할 수 있다는 것을 처음 알았다. 풀어보길 참 잘한 것 같다.
'Baekjoon' 카테고리의 다른 글
[백준] 1254 팰린드롬 만들기 (실버2) / 문자열 (0) | 2023.04.27 |
---|---|
[백준] 7785 회사에 있는 사람 (실버5) / 시간초과 해결, 리스트, 딕셔너리 시간복잡도 (0) | 2023.04.27 |
[백준] 1543 문서 검색 (실버4) / 문자열 (0) | 2023.04.27 |
[백준] 1316 그룹 단어 체커 (실버5) (0) | 2023.03.28 |
[백준] 2606 바이러스 (실버3) / DFS (0) | 2023.03.08 |