숫자 n이 주어졌을 때 8진법과 16진법으로 바꾸는 문제이다.

def eight(n):
    L = []
    while n > 0:
        if (n / 8) > 0:
            L.append(n%8)
            n = n//8
    s = 10**(len(L)-1)
    resert = 0
    L.reverse()
    
    for i in L:
        resert += i * s
        s = s // 10
    return resert

def sixteen(n):
    a = ['A', 'B', 'C', 'D', 'E', 'F']
    string = ''
    while n > 0:
        if ((n%16) < 10):
            string += str(n%16)
            n = n//16
        else:
            string += str(a[(n%16)-10])
            n = n//16
        
        # reversed_string = "".join(reversed(string)) 
        reversed_string = string[ : : -1]
    return reversed_string

n = int(input())

print(eight(n), sixteen(n))

 

나는 다음과 같이 함수로 만들어 호출했다.

16진범은 알파벳이 들어가기 때문에 str로 받은뒤 뒤집어 return했다.

8진법은 조금 무식한 방법을 사용했는데 이것도 똑같이 str으로 받은 뒤 뒤집어 주는게 시간을 덜 잡아먹을거 같다.

'<코딩테스트> > [기타 문제-기초]' 카테고리의 다른 글

[006]가장 큰 나머지  (0) 2024.09.15
[005] ID만들기  (1) 2024.09.15
[004] 아스키코드  (1) 2024.09.12
[002] 등차수열  (0) 2024.09.11
[001] 비밀번호 찾기  (0) 2024.09.11

+ Recent posts