[짤막] 진법 표기

Jeong SeongYun·2022년 7월 22일
0

짤막

목록 보기
9/16
post-thumbnail

코테를 풀다보면 진법을 응용한 문제들이 많이 나옵니다. 진법 문제를 만나도 이제 당황하지 않도록 정리 한번 하고 갑시다.

기본 원리

10진법은 n진법으로 바꾸는 것은 어렵지 않습니다.

13을 n진법으로 나타낸다고 하면
13을 n으로 몫이 0이 될 때까지 계속 나누고 그 나머지만을 모으면 되죠.

13을 2진법으로 나타내봅시다.

간단하죠? 저렇게 나머지를 다 구해놓고 밑에서부터 구해주면 끝납니다. 이런 식으로 10진법을 n진법으로 바꿔줍니다.

코드 구현

위의 방식을 python 코드로 구현 해보겠습니다.

def convert(n, base) :
    converted = ''
    
    while n : ## n이 양수면 계속 돌아감
        n, mod = divmod(n, base) 
        converted = str(mod) + converted
        
    return converted    

진법을 구하는 방식만 이해하고 있다면 크게 어렵지는 않습니다.

다만 divmod()라는 함수를 이용하여 나오는 몫을 그대로 다시 n에 할당해준 게 기억해야할 점이라면 기억해야할 점입니다.

n진법에서 10진수로

그렇다면 n진법으로 되어있는 string을 어떻게 우리가 익숙한 10진법으로 바꿀 수 있을까요?

여러분이 자주 쓰셨던 int()함수는 n진법을 10진법으로 바꿔주는 역할 또한 합니다.

## n진법을 10진법으로 바꾸기
int('{n진법}', n)

int('1101',2)

Output
13

간단하죠? n진법을 구하는 방법은 코테 문제에서 종종 나오니 그 원리와 구현하는 방법을 잘 기억해두도록 합시다!

profile
물어보면 대답해줄 수 있는 데이터쟁이

0개의 댓글