먼저 *고생한 내 풀이를 공개한다.
코드 해석:
<설명이 매우 조잡하여 이해가 어려우니 넘기는 것을 추천드립니다.>
1. 8진수를 입력받아 변수 'a'에 저장한다.
2. 변수 'a'의 담은 입력값의 데이터 타입을 정수로 바꿔 변수 'b'에 저장한다.
3. n은 while 반복문을 위해 지정한 변수이다.
4. while 반복문 안에서 8진수를 10진수로 변환할 것이며, 그때 10진수를 리스트 e에 담을 것이다. 그래서 e를 리스트로 지정?했다.
5~10. 8진수의 자릿수마다 따로 10진수로 변환할 것이다. 자릿수를 len(a)로 알아내고 그만큼
'%'는 나머지를 구하는 연산자이다. 8진수의 가장 왼쪽 자릿수부터 10진수로 변환하기 위해 6번 줄을 통해 왼쪽 자릿수의 수를 변수 'c'에 저장한다.
가장 왼쪽 자릿수는 8의 0 제곱이고 자릿수가 커질 때마다 제곱의 수가 증가되므로 변수 n을 제곱 수로 이용했다.
8번 줄을 통해 기존 8진수에서 10진수로 변환된 자릿수를 '//'연산자를 이용해 제거한다.
다음 자릿수의 제곱을 위해 n의 값에 1을 추가하고, 리스트 'e'에 10진수를 차례대로 담게 된다.
마지막으로 for 문을 통해 리스트의 값을 변수 'f'에 담아 각 자릿수의 합을 구하여 'f'를 출력하는 것으로 코드가 마무리된다.
결론: 8진수를 10진수로 바꾸는 것을 구현하느라 고생했다.
이제 모범답안을 보자
단 3줄에 끝난다.
가독성을 포기하면 1줄로 가능
int() 함수의 두 번째 인자?의 존재를 알았더라면 편하게 풀었을 텐데,,
int(a, b)는 a를 b진수로 반환하는 역할을 한다.
두 번째 인자의 기본값은 10이다.
코드를 실행시켜 입력값을 주었을 때 8진수가 10진수로 변환되는 것을 볼 수 있다.
'Algorithm > CodeUp - Python' 카테고리의 다른 글
기초 100제 - 1036 : [기초-출력변환] 영문자 1개 입력받아 10진수로 출력하기(설명) (0) | 2019.12.08 |
---|---|
기초 100제 - 1035 : [기초-출력변환] 16진 정수 1개 입력받아 8진수로 출력하기(설명) (0) | 2019.12.07 |
기초 100제 - 1033 : [기초-출력변환] 10진 정수 입력받아 16진수로 출력하기2(설명) (0) | 2019.12.07 |
기초 100제 - 1032 : [기초-출력변환] 10진 정수 입력받아 16진수로 출력하기1(설명) (0) | 2019.12.07 |
기초 100제 - 1031 : [기초-출력변환] 10진 정수 1개 입력받아 8진수로 출력하기(설명) (0) | 2019.12.07 |