https://www.acmicpc.net/problem/10829
정수를 이진수로 변환하기 위해서는 해당 수를 반복해서 2로 나누면서 나머지를 추가해주고, 맨 마지막에 나머지로 이루어진 수를 뒤집어주면 된다. 이를 위해 아래처럼 코드를 짰다.
string toBinary(long long num) {
if (num == 0) return "0";
string bin = "";
while (num > 0) {
bin.push_back('0' + num % 2);
num /= 2;
}
reverse(bin.begin(), bin.end());
return bin;
}
반환형을 int로 해버리면 반복해서 자릿수를 추가하기가 어려워진다. 그래서 리턴형은 string으로 설정해줘야 한다. 이후 이 문자열에 나머지를 추가하면서 바로 문자로 변환해주기 위해 push_back('0' + num % 2)을 해준다. reverse 함수에는 시작 위치와 종료 위치를 줘야 한다.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string toBinary(long long num) {
if (num == 0) return "0";
string bin = "";
while (num > 0) {
bin.push_back('0' + num % 2);
num /= 2;
}
reverse(bin.begin(), bin.end());
return bin;
}
int main() {
long long n;
cin >> n;
cout << toBinary(n) << "\n";
return 0;
}