일단 비트단위 연산이 기본입니다.
저는 홀짝일때로 이 문제를 나누었는데
짝수일때는 간단합니다.
짝수를 2진수로 변홨했을때 1의 자리수가 0이기 때문에 +1 해주면 됩니다.
ex) 2 -> 10 -> 11 -> output data : 3
ex) 4 -> 100 -> 101 ->output data : 5
ex) 6 -> 110 -> 111 -> output data : 7
input data가 홀수
input data를 2진수 변환했을때 가장 먼저 나오는 0의 자리를 1로 나머지는 0으로
이 숫자를 input data에 더하고 이 숫자를 /2 한 값을 빼주시면 됩니다.
ex) 5 -> 101 -> 가장 먼저 나오는 0을 탐색(2의 1승자리) -> 101 + 10 - 1 -> 110 ->output data : 6
ex) 3 -> 11 -> 가장 먼저 나오는 0을 탐색(2의 2승자리) -> 11 + 100 - 10 -> 101 ->output data : 5
화이팅
헐랭 감사합니다.
덕분에 풀었어요ㅠㅠ 너무 감사합니다!
bin()을 써서 해보려다가 안되서 다른 방법을 찾고 있었는데,, 이런 방법도 있네요. 감사합니다!
감사합니다