강의로 돌아가기
이동현

통과한 구현방법(코드없음)

일단 비트단위 연산이 기본입니다.

저는 홀짝일때로 이 문제를 나누었는데

  1. 짝수일때는 간단합니다.
    짝수를 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

  2. 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

화이팅

  • munggu

    헐랭 감사합니다.

    munggu―2022.11.12 23:50
  • CYJ

    덕분에 풀었어요ㅠㅠ 너무 감사합니다!

    CYJ―2022.11.20 04:08
  • nstalways@gmail.com

    bin()을 써서 해보려다가 안되서 다른 방법을 찾고 있었는데,, 이런 방법도 있네요. 감사합니다!

    nstalways@gmail.com―2022.12.01 18:31
  • park

    감사합니다

    park―2023.11.29 17:52
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.