문제 링크
문제 해설
문제를 보자마자 숏코딩 욕심이 나서 풀어본 문제이다. 컴퓨터가 뺄셈을 처리할 때 2의 보수를 사용하는데, 이로 인해 뺄셈은 2의 보수의 합으로 나타낼 수 있다.
예를 들어 \(10-3\)이라는 식이 있을 때 이는 \(10+(-3)\)으로도 표현할 수 있다. 위의 내용과 종합해보면 \(-3\)이 \(3\)의 2의 보수가 되는 것이다. 즉, 어떤 수 \(n\)의 2의 보수는 \(-n\)과 같다.
두 수의 서로 다른 비트 수는 두 수를 XOR 연산한 결과에서 \(1\)의 개수와 같다.
Code
fun main()=print(readln().toInt().let{-it xor it}.countOneBits())
'Algorithm > BOJ' 카테고리의 다른 글
[Kotlin] 백준 2812 : 크게 만들기 (0) | 2023.04.04 |
---|---|
[Kotlin] 백준 16496 : 큰 수 만들기 (0) | 2023.04.03 |
[Kotlin] 백준 22252 : 정보 상인 호석 (0) | 2023.03.23 |
[Kotlin] 백준 17830 : 이진수씨의 하루 일과 (0) | 2023.03.21 |
[Kotlin] 백준 23757 : 아이들과 선물 상자 (0) | 2023.03.20 |
댓글