Study/Tech Interview

Algorithm - 진수 변환, 거듭 제곱, 에라토스테네스의 체

by somida 2021. 5. 23.
반응형

진수 변환

기본

# 10진수에서 2진수, 8진수, 16진수
b = bin(num)
o = oct(num)
h = hex(num)

# 2, 8, 16진수에서 10진수로
b = int("0b11100", 2)
o = int("0o74", 8)
h = int("0x3c", 16)
# format
b = format(num, "#b")
o = format(num, "#o")
h = format(num, "#x")

# #을 제거하면 접두어가 빠진 결과로 나옴
bb = format(num, "b")
oo = format(num, "o")
hh = format(num, "x")

 

변환 알고리즘

def convert1(number, base):
    answer = ''
    while number:
        modNum = number % base
        answer = str(modNum) + answer
        number //= base
    return answer

print(convert1(9, 3))
NOTATION = "0123456789ABCDEF"

def convert2(number, base):
    q, r = divmod(number, base)
    n = NOTATION[r]
    return convert2(q, base) + n if q else n

 

거듭제곱

기본

num = 2
# 2의 10승
print(num ** 10)

 

pow

# 2의 10승
print(pow(2, 10))

 

소수 판별

기본

def prime_check(num):
    for i in range(2, num):
        if num % i == 0:
            return False
        if i * i > num:
            break
    return True

 

에라토스테네스의 체

def primeNumber(num):
    arr, primes = [0] * (num + 1), []
    for i in range(2, num):
        if arr[i] == 0:
            primes.append(i)
        for j in range(i ** 2, num, i):
            arr[j] = 1
    return primes

 

 

반응형

댓글