문제 설명
어떤 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;
}
배열의 크기가 정해져 있지 않기때문에, 배열 대신 벡터를 사용했다.
물론 동적으로 배열을 할당하는 방법도 있지만 벡터를 사용하는게 개인적으로 편한 것 같다.
배열이냐, 벡터냐만 다르지 알고리즘 자체는 똑같았다.
'PS > CodeUp' 카테고리의 다른 글
CodeUp / 1차원 배열 / 1425번 / 자리 배치 / C++ (0) | 2020.10.03 |
---|---|
CodeUp / 1차원 배열(?) / 1420번 / 3등 찾기 / C++ (0) | 2020.10.03 |
CodeUp / 1차원 배열 / 1412번 / 알파벳 개수 출력하기 / C++ (0) | 2020.10.02 |
CodeUp / 1차원 배열 / 1411번 / 빠진 카드 / C++ (0) | 2020.10.02 |