C# / .NET 알고리즘과 퀴즈
본 알고리즘 퀴즈 문제는 C#/.NET 개발자를 위한 알고리즘 인터뷰 혹은 C# 프로그래밍을 통한
문제 해결 알고리즘을 연구해 보는데 도움이 되고자 작성되었습니다.
문제 해결 알고리즘을 연구해 보는데 도움이 되고자 작성되었습니다.
퀴즈 질문 | |
예상답변/설명 | 정수의 비트들이 회문을 이루는지 체크하기 위해서는 정수N의 비트들을 거꾸로 변환하여 임시 변수에 넣어둔 후, 이 임시변수와 입력 정수가 같은지를 체크하면 된다. 만약 정수가 양의 정수라면 다음과 같이 구현할 수 있다.
bool IsPalindrome(int n)
{
int rev = 0;
int t = n;
while (t != 0)
{
rev <<= 1;
rev |= t & 1;
t >>= 1;
}
return (rev == n);
}
만약 정수가 음수인 경우 위와 같이 오른쪽으로 Shift를 하게 되면 무한루프에 빠지게 되므로, 이런 경우는 반대로 체크값 1을 계속 왼쪽으로 Shift하는 방법을 고려해 볼 수 있다. |