1094번: 막대기

2022. 4. 3. 13:56C언어/백준

-Silver 5

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

 

1094번: 막대기

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

www.acmicpc.net

 

-결과

 

-코드

#include <stdio.h>

int main()
{
    int i, x, y;
    int sum = 0;
    scanf("%d", &x);
    for(i=0; x>0; i++)
    {
        y = x % 2;
        x = x / 2;
        sum += y;
    }
    printf("%d", sum);
}

 

-풀이

먼저 정수를 입력받기 위해 scanf함수와 정수형 변수 x를 사용한다.

그 후 for문을 통해 입력받은 정수가 자연수일 경우로 조건을 제한해서 실행문을 실행하게 한다.

정수형 변수 y에 x를 2로 나눈 나머지를 저장하고, y를 sum에 더한다.

 

이 문제는 64보다 작은 자연수를 2진수로 바꿨을 때 나타나는 1의 개수를 묻는 문제이다.

y에 저장될 수 있는 수는 2로 나누었기 때문에 0과 1뿐이고, 그걸 sum에 더하므로 1의 개수를 알 수 있게 짠 코드이다.

 

'C언어 > 백준' 카테고리의 다른 글

1436: 영화감독 숌  (0) 2022.05.01
1181: 단어 정렬  (0) 2022.05.01
1018: 체스판 다시 칠하기  (0) 2022.05.01
10773: 제로  (0) 2022.04.03
9012: 괄호  (0) 2022.04.03