sjskajrj123   2년 전

그냥 16진수로 입력 받아서 출력하면 되는건 아는데

그냥 한번 코드 짜봤습니다!

제 생각대로면 로직이 맞는 것 같은데 오류도 아닌 틀렸다고 나와서 

아무리 해봐도 모르겠더라구요....

뭐가 틀렸을까요???

drash99   2년 전

x_list에 0이 빠졌어요

wizardrabbit   2년 전

안녕하세요? 확인 결과, 고쳐야 할 점을 두 가지 찾은 것 같습니다.

1) 입력되는 16진수의 숫자가 0인 경우도 고려하기

16진수에 나오는 숫자들은 0~9, A~F 중 하나입니다. 10, F021 같은 0이 포함되는 숫자도 고려할 수 있도록 X_list에 0을 추가해 주세요.

2) exp의 수식 올바르게 고치기

작성하신 코드에서 변수 exp가 하는 역할은 자릿수를 고려해 16의 거듭제곱을 적절히 곱해주는 것으로 보입니다. 입력된 수가 ABC라면 A * (16 ** 2) + B * (16 ** 1) + C * (16 ** 0) 같은 경우처럼요.

문제가 되는 점은 현재 받아온 수가 몇 번째 수인지를 알아야 하는데, 그 방법이 index()를 사용한 방법이기 때문입니다. 이 경우 같은 수가 여러 번 주어진 경우 문제가 될 수 있습니다.

만약 111이라는 수가 입력으로 주어진다면, 첫 번째 루프에서도, 두 번째 루프에서도, 그리고 마지막 세 번째 루프에서도 index(1)은 0이 됩니다. 왜냐하면 파이썬의 index()는 조건을 만족하는 첫 번째 수만을 찾기 때문입니다. 그렇기 때문에 같은 수가 여러 번 주어지는 상황에서는 가져온 수만으로 어느 자리에 있는 수인지를 알 수 없게 됩니다.

이 두 가지 문제가 해결된다면 정답을 받으실 수 있을 것으로 예상됩니다! 문제 해결에 도움이 되었기를 바랍니다.

sjskajrj123   2년 전

헉 그러네요

이런 걸 놓치고 있었다니....

감사합니다!!

답변주신 분들 너무 감사드려요!!

댓글을 작성하려면 로그인해야 합니다.