without haste but without rest10진수 -> 2진수
2진수 -> 10진수
10진수 -> N진법 변환
잘 작동하는지 확인 안했음 테스팅 필요 문제 내용 format함수 bin()을 사용하지 않고 사용자에게 입력받은 10진수를 2진수로 변환하는 프로그램을 작성하라. 문제 풀이
코드 결과
나와 어울리는 개발자 유형 찾기 MBTI로 알아보는 개발자 유형 내 안의 개발자를 찾아서...⭐ comu.codeuniv.kr 문제양의 정수 n이 주어졌을 때, 이를 이진수로 변환하기 풀이2진수 변환 함수 사용 ⭕️
2진수 변환 함수 사용 ❌
내장 함수 아예 사용 ❌
관련 문제3460번: 이진수 양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다. www.acmicpc.net 코딩테스트에서는 내장함수를 사용하지 않고 직접 구현해보세요 ~ 하는 문제가 자주 나오기때문에 .. 도전해보았다 ㅎㅅㅎ @미닛메이드 Minnit 알고리즘 문제를 풀다보면 10진수에서 2진수로 2진수에서 10진수로 변경을 필요로 하는 문제가 많이 있습니다. 이러한 문제가 나오는 이유는 컴퓨터가 애초에 2진수 체계로 만들어져 있기 때문에 컴퓨터에 대한 이해에 있어서 진법을 이해하는 것이 중요하기 때문이라고 생각합니다. 실제로 컴퓨터에서 곱하기 연산이나 나누기 연산을 한 자리 씩 shift 시키면서 하는 것을 보면 흡사 십진수를 이진수로 변환하는 프로그래밍과 유사하다는 느낌도 받았습니다.(저의 개인적인 생각입니다...!) 십진수를 이진수로 바꾸는 방법은 십진수를 2로 나눈 몫, 나머지 를 이용해서 각 자리를 정해줍니다. 19 이라는 수가 있다면 맨처음 2로 나누면 몫 9이고 나머지는 1 이기 때문에 최하위 bit 1이되고 다시 9를 2로 나누면 몫 4 이고 나머지는 1이기 때문에 그 다음 자리의 bit 1이 됩니다. 계속에서 끝까지 살펴보면 4를 2로 나누면 몫2 나머지 0 그 다음 자리의 bit 0 그 다음 2를 2로 나누면 몫 1 나머지 0 이니깐 그 다음 자리의 bit 0 이제 1을 2로 나누면 몫 0 나머지 1 이니깐 최상위 비트는 1 그리고 몫이 0이므로 루프를 종료합니다. 그래서 10001(2) 라고 변경이 됩니다. 위의 과정을 코드로 구현 하면 10진수에서 2진수로 변경하는 함수가 됩니다. 그리고 저위에 나누는 수를 2 대신 3으로 하면 3진수로 변경하는 함수가 됩니다. 제가 구현한 코드를 보면 다음과 같습니다. 테스트코드에서 사용한 bin 함수는 파이썬에서 10진수를 2진수로 변환하는 builtin 함수입니다. bin(20) 을 출력하면 '0b10100' 문자열로 앞에 0b를 출력하기 때문에 이부분을 제외하기 위해서 slicing을 해서 int로 형변환을 하였습니다. 복사 가능한 코드 def change_binary(n : int) -> int: result, idx = 0,0 while (n >=1): remainder =n % 2 n = n // 2 result += (10**idx)* remainder idx +=1 return result 위에서 이야기 한 것처럼 이번에는 3진수로 변환하는 함수를 그대로 구현보겠습니다. 3진수로 변환하는 함수는 단순히 나누는 수를 2->3으로 변경한 것입니다. 그렇기 때문에 2진수로 바꾸는 방법을 이해하신 분은 4진수 5진수 등도 쉽게 변경하는 함수를 만들 수 있을 것 입니다. 조언이나 피드백은 언제나 감사합니다. 감사합니다. |