[백준/C++] 10829 - 이진수 변환

orangesnail·2025년 8월 25일

백준

목록 보기
156/169

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;
}
profile
초보입니다. 피드백 환영합니다 😗

0개의 댓글