Baekjoon 문제 풀기 (1550번 : 16진수)Python
1550번 : 16진수
1. 문제읽기
16진수..?
16진수라는게 이해가 안되서 16진수부터 찾아보았다.. 대충 2진수 8진수처럼 구하는 거겠지 했는데 A~F 가 나오면서 이해가 안가기 시작..
내가 이해한 게 맞다면 10부터 15까지 쓰려면 두 자리수가 되버리니까 A~F도 그냥 “숫자”라고 생각하고 한자리 수를 맞추기 위해 치환해서 쓴 듯.
예를 들면 0, 1, 2, 3, 4, ~ , 9, A, B, C, D, E, F, 10, 11, ~ 이런 식이다.
쓰는 이유는 이진수 네자리를 16진수 한자리로 편하게 나타내기 위해서라고 한다.
이 이상은.. 일단 패스..
2. 제출 코드
처음에 A~F를 어떻게 숫자로 나타내지에서 막혔다.
elif
를 쓸까 하다가 너무 지저분해보일 것 같아서 패스하고.. 얼추 틀은 잡았는데 막혀서 결국 구글링해서 참고..
dictionary
를 쓰자!
자바를 배울 때 switch
를 좋아했는데 파이썬으로 다시 넘어오니 파이썬 개념이 가물가물..
쨌든 dictionary
로 A~F 변환은 넘기고, for문
과 if문
으로 조건 달아주기.
막혔던 부분
- A~F 치환하기 : dic 으로 해결! (검색찬스)
- 제곱을 어떻게 나타내나? : len() & 변수 n (검색찬스)
검색 찬스가 거의 다했다.. 허허(머쓱)
a = input()
total = 0
n = 0
my_dic = {"A": 10, "B": 11, "C": 12, "D": 13, "E": 14, "F": 15}
for i in a:
if i in my_dic.keys():
total += my_dic[i] * (16 ** (len(a) - 1 - n))
else:
total += int(i) * (16 ** (len(a) - 1 - n))
n += 1
print(total)
3. 공부할 것
dictionary
개념
간단하게 자바의switch
비슷한 개념을 쓸 때 사용하자!
keys()메소드 : 뒤에 () 꼭 달아주자.- 제곱 연산자 **
^ 이게 제곱 연산자 인줄…
괄호 우선순위에 맞게 쳐주기 - 증감 연산자
파이썬에는 증감 연산자 ++가 없다. 풀어서 써주기 int()
함수
정답 코드를 둘러보다 발견..int()
함수로 간단하게 나타낼 수 있다.
n진수 -> 10진수로 변환 가능!
```python int(string, base) # base에는 진법을 넣어주자
print(int(input(),16)) # 숏코딩 정답 코드 ```
댓글남기기