Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- String Method
- Join
- 노마드코딩
- Algorithm
- 파이썬
- aws jupyter notebook
- Stack
- 정보처리기사 c언어
- programmers
- 데이터시각화
- 가상환경
- 코딩테스트
- NumPy
- pandas
- openCV
- 백준
- Selenium
- MySQL
- 알고리즘
- dataframe
- 프로그래머스
- 알고리즘스터디
- queue
- python
- 자료구조
- Matplotlib
- 알고리즘 스터디
- type hint
- javascript
- 선그래프
Archives
- Today
- Total
조금씩 꾸준히 완성을 향해
[Algorithm] 백준 10829 이진수 변환 with Python 본문
DataStructure & Algorithm/문제풀이
[Algorithm] 백준 10829 이진수 변환 with Python
all_sound 2022. 10. 13. 17:39문제
자연수 N이 주어진다. N을 이진수로 바꿔서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000,000,000,000)
출력
N을 이진수로 바꿔서 출력한다. 이진수는 0으로 시작하면 안 된다.
예제 입력
53
예제 출력
110101
내가 짠 코드
n = int(input())
res = ''
while n > 0:
res += str(n % 2)
n = n //2
print(res[::-1])
구현 자체는 너무 간단해서 딱히 설명할 거리가 없을 것 같다.
n을 2로 나눈 나머지를 문자열에 하나씩 쌓은 후 순서를 뒤집어 주니 이진수가 완성됐다.
재귀 함수로 구현한 코드
def DFS(x):
if x==0:
return
else:
DFS(x//2)
print(x%2, end='')
n=int(input())
DFS(n)
사실 이 문제는 재귀 함수로 구현하는 게 베스트인 것 같다. 내 코드에서처럼 다시 거꾸로 인덱싱할 일 없이 함수 안에서 제대로 정렬이 되기 때문이다. n을 2로 나눈 몫을 다시 인자로 넣어 재귀함수를 호출한 후, print문을 아래로 빼면 출력이 거꾸로 된다. (함수가 재호출되면서 print문들이 스택에 쌓여 함수가 끝나기를 기다리고 있다가 거꾸로 출력)
익숙해지기 위해 재귀함수 문제들을 더 많이 접해봐야 겠다.
'DataStructure & Algorithm > 문제풀이' 카테고리의 다른 글
[Programmers] 프로그래머스 완주하지 못한 선수 with Python (0) | 2022.10.25 |
---|---|
[Programmers] 프로그래머스 괄호 변환 with Python (0) | 2022.10.14 |
[Programmers] 프로그래머스 프린터 with Python (0) | 2022.10.11 |
[Algorithm] 백준 2164 카드2 with Python (0) | 2022.10.09 |
[Algorithm] 백준 18258 큐2 with Python (0) | 2022.10.09 |