[BOJ] 1094_막대기

ProblemSolving / / 2022. 5. 14. 00:11

막대기

링크: https://www.acmicpc.net/problem/1094

 

1094번: 막대기

지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대

www.acmicpc.net

간단하게 입력받은 값에 대해서 2진법으로 변환했을 때, 1의 개수를 세는 것
간단하게 64cm를 반으로 자르면 만들 수 있는 막대기는 64, 32, 16, 8, 4, 2, 1이다.
이는 각각 100 0000, 010 0000, 001 0000, 000 1000, 000 0100, 000 0010, 000 0001이다.
이것에 대한 조합으로 23을 만들기 위해서는 16, 4, 2, 1 -> 001 0000, 000 0100, 000 0010, 000 0001 이며, 이에 대한 합은 001 0111이고 23을 이진법으로 변환한 001 0111과 동일하다.
따라서, 23을 2진법으로 변환하고 그 1의 개수를 세는 것이 답이다.

  • 정답 코드
class Boj1094 {
    companion object{
        @JvmStatic
        fun main(args: Array<String>){
            var n = readln().toInt()
            var count = 0
            while(n != 0){
                if(n.mod(2) == 1) count++
                n /= 2
            }
            println(count)

        }
    }
}

'ProblemSolving' 카테고리의 다른 글

[BOJ] 2193 이친수  (0) 2022.05.18
[BOJ] 1245_농장 관리  (0) 2022.05.15
[BOJ] 1501_영어 읽기  (0) 2022.05.13
[BOJ] 1417 국회의원 선거  (0) 2022.05.12
[BOJ] 1010_다리 놓기 재해결  (0) 2022.05.11
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기