PS/CodeUp

CodeUp / 1차원 배열 / 1416번 / 2진수 변환 / C++

KimMinJun 2020. 10. 3. 12:45

문제 설명  

어떤 10진수 n이 주어지면 2진수로 변환해서 출력하시오.

 

예)

10    ----->  1010

0    ----->  0

1    ----->  1

2    ----->  10

1024    ----->  10000000000

 

입력

10진수 정수 n이 입력된다.

(n은 21억이하의 임의의 수이다.)

 

출력

2진수로 변환해서 출력한다.

 

입력 예시  

7

 

출력 예시

111

 

<내소스>

#include <iostream>
#include <vector>
using namespace std;

int main() {
	int n;
	vector<int> v;

	cin >> n;

	while (true) {
		v.push_back(n % 2);
		n /= 2;

		if (n == 0) break;
	}

	for (int i = v.size()-1; i >= 0; i--) {
		cout << v[i];
	}
}

 

<다른 사람의 소스>

#include <stdio.h>

int main()
{
	int arr[255], i = 0, j, n;

	scanf( "%d", &n );

	if ( n == 0)
	{
		printf("0");
		return 0;
	}
	
	while ( n > 0)
	{
		arr[ i ] = n % 2;
		n = n / 2;
		i++;
	}
	
	for( j = i - 1 ; j >= 0 ; j--)
		printf("%d", arr[j] );

	return 0;
}

 


배열의 크기가 정해져 있지 않기때문에, 배열 대신 벡터를 사용했다.

물론 동적으로 배열을 할당하는 방법도 있지만 벡터를 사용하는게 개인적으로 편한 것 같다.

배열이냐, 벡터냐만 다르지 알고리즘 자체는 똑같았다.