본문 바로가기
⌨️ Algorithm/C

1/28 [C] 백준 1094번 - 막대기

by Lucy Oh 2022. 1. 28.

<문제>

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

 

1094번: 막대기

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

www.acmicpc.net

 

<내가 제출한 코드>

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
	int x,i,cnt=0;

	scanf("%d", &x);

	for (i = 64; i >= 1; i /= 2) {
		if (i <= x) {
			x = x - i;
			cnt++;
		}
	}

	printf("%d", cnt);
}

주어진 x가 몇개의 2의 제곱수들로 이루어져 있는지 구하는 문제이다.

 

예를들어 x가 23이라면 16+4+2+1이므로 4가 출력되는 것이다.

 

그래서 i를 64부터 1까지 2씩 나눠지는 i로 만약 i가 x보다 작거나 같으면 x에서 i를 빼고 카운트(cnt)를 1씩 늘리는 반복문을 만들어 주었다.

 

마지막엔 cnt를 출력해주었다.

댓글