BOJ[8741] - 이진수 합 by JavaScript
이진수 합
문제
언어
- JavaScript
순서도
- 하나씩 나열해보며, 규칙 찾기
- 규칙대로 구현하기
문제 풀이 step 1
- 이진수로 나타냈을 때, k 자리 이하인 모든 자연수의 합을 구하는 문제입니다.
- k 의 범위가 상당히 큽니다. 그래서 k 자리 이하인 모든 자연수의 합을 구하면 그 수도 엄청 커지게 되서 덧셈으로는 구하기 무리가 있어 보입니다.
- 그렇다면 진리의 하나씩 나열해보기 방법을 사용합니다.
- k = 1
- 1 (1)
- k = 2
- 110 (6)
- k = 3
- 11100 (28)
- k = 4
- 1111000 (120)
- k = 1
- 하나씩 나열해보니 규칙이 보입니다.
- k 자리 이하인 모든 자연수의 합은 n 개의 1 과 n - 1 개의 0 으로 이루어져있습니다.
- 이렇게 찾은 규칙대로 합을 구하면 정답입니다.
- 추가 설명은 주석으로 작성하겠습니다.
후기
- 역시, 어떻게 풀어야 할 지 모르겠으면, 하나씩 나열해보기 방법이 진리인것 같습니다.
소스 코드
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
const solution = (input) => {
const n = Number(input[0]);
let res = "";
// n 개의 1
for (let i = 0; i < n; i++) res += "1";
// n - 1 개의 0
for (let i = 0; i < n - 1; i++) res += "0";
return res;
};
console.log(solution(input));