이진수

문제

언어

  • JavaScript

순서도

  1. 각 테스트케이스마다 입력된 숫자를 이진수로 바꾸고, 1 의 위치를 공백으로 구분해서 출력

문제 풀이 step 1

  • JavaScript 에 이진수로 바꾸는 함수를 이용하면 쉽게 풀 수 있는 문제입니다.
  • Number.toString(radix)
    • 매개변수로 2 와 36 사이의 정수를 넣으면 그 수의 진수로 변환합니다.
    • Number.toString(2)
    • Number.toString(3)
    • Number.toString(16)
  • 문제 풀이에 대한 추가 설명은 주석으로 작성하겠습니다.

Reference.

소스 코드

const input = require("fs")
	.readFileSync("/dev/stdin")
	.toString()
	.trim()
	.split("\n");

// 입력받은 이진수의 1 의 위치를 공백으로 구분해서 반환하는 함수
const getPos = (binaryStr) => {
	// 위치가 낮은 것부터 출력하기 위해서 이진수를 역순으로 뒤집기
	const str = binaryStr.split("").reverse();

	let res = [];

	for (let i = 0; i < str.length; i++) {
		if (str[i] === "1") res.push(i);
	}

	return res.join(" ");
};

const solution = (input) => {
	let t = Number(input[0]);

	let res = "";
	let index = 1;
	while (t-- > 0) {
		// 이진수로 변환
		const binaryStr = Number(input[index++]).toString(2);
		res += getPos(binaryStr) + "\n";
	}

	return res;
};

console.log(solution(input));