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()함수를 사용하여 알아보자 !
'[알고리즘] > 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 |