2진수로 바꾸기
0 이상의 정수 n이 주어진다.
n을 2진수로 바꾸어 출력하라.
맨 앞에 쓸데없는 0은 붙이지 않는다.
단, n이 0이면 0을 출력한다.
- 입력
- 0 ≤ n ≤ 10^9
- 출력
- n의 2진수 표기 한 줄
13
1101
0
0
0 이상의 정수 n이 주어진다.
n을 2진수로 바꾸어 출력하라.
맨 앞에 쓸데없는 0은 붙이지 않는다.
단, n이 0이면 0을 출력한다.
13
1101
0
0
실행하면 이 줄들이 차례로 input()·표준 입력으로 들어가요(실행 중에 묻지 않아요).
$ 준비됐어요
코드를 입력해 풀려면 PC에서 열어 주세요. 모바일에서는 문제와 풀이를 볼 수 있어요.
2로 나눈 나머지를 모으면 아랫자리부터 나오니, 앞에 붙이거나 다 모은 뒤 뒤집어야 해요.
흔한 함정은 while (n > 0)만 쓰는 것 — n = 0이면 한 바퀴도 돌지 않아 빈 줄이 나와요.
몸통을 먼저 한 번 도는 do … while(Java·C#·C·C++·JavaScript·TypeScript)이 딱 맞고, do가 없는 Python·크레이콘은 0을 따로 처리해요.
이미 있는 도구: Python bin(n)[2:], JavaScript n.toString(2), Java Integer.toBinaryString(n), C# Convert.ToString(n, 2) — 모두 0을 "0"으로 내 줘요.
크레이콘은 동안 (n > 0) { … n = 수학.몫(n, 2); }이고, /는 소수까지 나누니 몫을 써요.
n = int(input())if n == 0: print(0)else: digits = "" while n > 0: digits = str(n % 2) + digits n //= 2 print(digits)let n = Number(require("fs").readFileSync(0, "utf8").trim());let digits = "";do { digits = (n % 2) + digits; n = Math.floor(n / 2);} while (n > 0);console.log(digits);import { readFileSync } from "node:fs";let n: number = Number(readFileSync(0, "utf8").trim());let digits = "";do { digits = (n % 2) + digits; n = Math.floor(n / 2);} while (n > 0);console.log(digits);import java.util.Scanner; public class Main { public static void main(String[] args) { int n = new Scanner(System.in).nextInt(); StringBuilder digits = new StringBuilder(); do { digits.append(n % 2); n /= 2; } while (n > 0); System.out.println(digits.reverse()); }}using System;using System.Text; class Program{ static void Main() { int n = int.Parse(Console.ReadLine().Trim()); var digits = new StringBuilder(); do { digits.Insert(0, n % 2); n /= 2; } while (n > 0); Console.WriteLine(digits); }}#include <algorithm>#include <iostream>#include <string> int main() { int n; std::cin >> n; std::string digits; do { digits += char('0' + n % 2); n /= 2; } while (n > 0); std::reverse(digits.begin(), digits.end()); std::cout << digits << '\n';}#include <stdio.h> int main(void) { int n; scanf("%d", &n); char digits[32]; int len = 0; do { digits[len++] = '0' + n % 2; n /= 2; } while (n > 0); for (int i = len - 1; i >= 0; i--) putchar(digits[i]); putchar('\n'); return 0;}n = 콘솔.줄읽기().수로변환();만약 (n == 0){ 콘솔.쓰기("0");}아니면{ digits = ""; 동안 (n > 0) { digits = n % 2 + digits; n = 수학.몫(n, 2); } 콘솔.쓰기(digits);}