알고리즘/programmers

[Programmers] 2개 이하로 다른 비트

꾸준함. 2021. 10. 7. 02:31

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/77885

 

코딩테스트 연습 - 2개 이하로 다른 비트

 

programmers.co.kr

두 가지 경우의 수를 고려해야 하는 문제였습니다.

1. 짝수인 경우 끝 비트가 0이므로 1만 더해주면 됩니다.

2. 홀수인 경우 끝 비트가 1이기 때문에 1을 더해주면 비트가 상당히 많이 바뀝니다. 따라서, 짝수와는 다른 방법으로 접근해야 합니다.

2.1 끝에서부터 즉, 2^0승부터 연속되는 1의 개수 k를 구하고 2^(k-1)을 더해주면 비트가 최소로 바뀌는 다음 숫자를 구할 수 있습니다.

2.2 예를 들자면, 110111은 k가 3이므로 100을 더해주면 111011이 되고 비트는 두 개만 바뀌면서 110111보다 큰 수입니다.

 

 

개발환경:Visual Studio 2017

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > programmers' 카테고리의 다른 글

[Programmers] 없는 숫자 더하기  (0) 2021.10.08
[Programmers] 110 옮기기  (0) 2021.10.08
[Programmers] 괄호 회전하기  (0) 2021.10.06
[Programmers] 약수의 개수와 덧셈  (0) 2021.10.06
[Programmers] 음양 더하기  (0) 2021.10.06