728x90
1. 문제
입력받은 n을 2진법으로 나타낸 뒤, 2진법을 나타낸 수를 뒤집는다. 그리고 그 수를 다시 10진법으로 변환시켜 출력하는 문제이다.
2. 배경지식
- 문자열 뒤집기는 이전 포스팅 배경지식에서 다루어보았다.
- 2진수와 10진수 변환하기
10진수를 2진수로 : bin 사용하기
2진수를 10진수로 : 0b'2진수'
bin(13) #0b1101
0b1011 #11
3. 구현 방안
* 구현 방안은 문제를 코드로 해결하기 전, 필자의 생각을 담은 기록용 공간이다.
- 우선 2진수와 10진수 표현하는 코드를 알아야겠다 ! (bin)
- 정수 n을 입력받고 n을 이진수 arr로 표현한다.
- 표현한 arr앞부분 0b를 제거해야한다. 이때 문자열 타입을 이용하여 [2:](3번째 이후 문자열만 출력)를 사용해준다.
-[::-1]을 사용하여 뒤집어준다.
- int('2진수 문자열', 2)를 사용하여10진법으로 다시 나타낸다.
4. 구현 코드
n=int(input())
arr=bin(n)
#10진수 n을 2진수로 변환 , arr타입은 str
arr=arr[2:]
#0b를 없애주자! 3번째 수부터 출력
arr_reverse=arr[::-1]
#뒤집어주기
num=int(arr_reverse,2)
print(num)
5. 오답 및 풀이
bin()의 타입은 str임을 간과하여 오류가 나는 경우가 많았다. 어떤 자료형인지 알아보기 위해 type()함수를 사용하여 알아보자 !
'[알고리즘] > BOJ' 카테고리의 다른 글
[백준/python] 11286번 절댓값 힙 (0) | 2023.02.02 |
---|---|
[백준/Python] 2753 윤년 (0) | 2022.09.05 |
[백준/Python] 10171 고양이 ♥ (0) | 2022.08.23 |
[백준/Python] 2566 최댓값 / 2차원 리스트 입력받기 (0) | 2022.08.14 |
[백준/Python] 13410 거꾸로 구구단/[파이썬]문자열 반대로 출력 (0) | 2022.08.02 |