문제

양의 정수 n이 주어질 때 1부터 n까지의 십진수를 이진수로 출력하라.

Generatre Binary Numbers

1. 내장함수 풀기

1
2
3
def generate_binary(n):
for i in range(1, n+1):
print(bin(i)[2:]) # 이진수는 0b가 붙으므로 슬라이싱으로 제거한다.

2. 큐를 사용하여 풀기

문제를 분석해보면, 2의 이진수는 10이고 3의 이진수는 11이다.

이는 1에다가 01을 붙인 것이다.

4의 이진수는 100이고 5의 이진수는 101이다. 이는 2의 이진수 10에다가 01을 추가한 것이다.

앞서 사용한 숫자에 01을 붙인 이진수가 나중에 사용된다.

  1. 큐를 하나 생성하고 1을 삽입한다.

  2. n만큼 반복한다.

    1. 큐에서 꺼낸 값을 i에 저장
    2. i에 01을 붙인 이진수를 큐에 삽입
    3. i를 출력
1
2
3
4
5
6
7
8
9
def generate_binary_queue(n):
q = Queue() # 직접 구현한 Queue 클래스
q.enqueue('1')

for _ in range(n):
i = q.dequeue()
q.enqueue(i+'0')
q.enqueue(i+'1')
print(i)