[알고리즘]/BOJ

[백준/Python] 11179 2진수 뒤집기/파이썬 이진수 표기

개발새발주발 2022. 8. 2. 17:32
728x90

1. 문제

 

 

11179번: 2진수 뒤집기

희연이는 스웨덴으로 이사하여 현재 학교를 다니고 있다. 1학년 교육과정은 중국에서 배웠고, 스웨덴과 중국 두 나라의 교육과정은 완전히 다르다. 희연이는 수학을 좋아한다. 하지만 지금은.

www.acmicpc.net

입력받은 n을 2진법으로 나타낸 뒤, 2진법을 나타낸 수를 뒤집는다. 그리고 그 수를 다시 10진법으로 변환시켜 출력하는 문제이다.

 

2. 배경지식 

- 문자열 뒤집기는 이전 포스팅 배경지식에서 다루어보았다. 

 

[백준/Python] 13410 거꾸로 구구단/[파이썬]문자열 반대로 출력

1. 문제 N단 ,1~K까지 K개의 항이 주어진다. 이때 N*1, N*2, N*3 .. N*K까지의 항 각각을 뒤집어 그 중 가장 큰 값을 출력한다. 2. 배경지식 문자열 뒤집기 1. for 문 str='Hello JaeGyeong' reverse_str='' for..

0lrlokr.tistory.com

- 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()함수를 사용하여 알아보자 !