안녕하세요

[node.js] 함수 단계 (자바스크립트) 4673 ~ 본문

백준 자바스크립트

[node.js] 함수 단계 (자바스크립트) 4673 ~

sakuraop 2022. 5. 8. 23:56

클론코딩을 하면서 부족한 자바스크립트 문법은 백준을 통해서 공부합시다.

초보입니다. 코드 설명은 "참고만" 해주세요.

https://www.acmicpc.net/step/5

 

함수 단계

함수를 구현해 봅시다. (이 문제는 C, C++, Python, Java, Go만 지원합니다. 그 외의 언어를 사용하신다면 이 문제를 무시해 주세요.)

www.acmicpc.net


4673 셀프 넘버

양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의합니다.  > n을 d(n)의 생성자라고 합니다. > 생성자가 없는 숫자를 셀프 넘버라고 합니다.

아래와 같이 10000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

1
3
5
7
9
20
31
42
53
64
 |
 |       <-- a lot more numbers
 |
9903
9914
9925
9927
9938
9949
9960
9971
9982
9993

제출한 답 - charAt() : 해당 자리의 문자열 가져오기, includes() : 포함 여부를 true or false로 반환

function findSelfNumber() {
  let constructor = [];

  for (i = 1; i < 10000; i++) {
    let dn = 0;
    dn += i;
    for (j = 0; j < 4; j++) {
      dn += Number(String(i).charAt(j));
    }
    constructor.push(dn);
  }

  let result = "";

  for (i = 1; i < 10000; i++) {
    if (!constructor.includes(i)) {
      result += i + "\n";
    }
  }
  console.log(result);
}

findSelfNumber();

 

코드 설명

    for (j = 0; j < 4; j++) {
        dn += Number(String(i).charAt(j));
      }

  • charAt(j) 함수로 자릿수를 하나씩((j = 0; j < 4; j++)) 선택하여 해당 위치의 숫자만큼 더합니다. 
  • String() 함수로 charAt() 함수를 실행시킨 뒤 Number() 함수로 숫자로 만들어 계산합니다. 
 
+ chatrAt() 함수는 해당위치에 문자가 존재하지 않는 경우에도 false나 undefined 등을 반환하지 않아 오류가 생기지 않았습니다.
const a = "abcd";

console.log(a.charAt(99));

  for (i = 1; i < 10000; i++) {
    if (!notSelfNumberList.includes(i)) {
      result += i + "\n";
    }

  • includes() 함수로 포함 여부를 확인한 후 not 연산자 ! 를 이용합니다. 그러면 포함되지 않은 수를 출력할 수 있습니다. 

1065 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.

아래와 같이 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어집니다.

110

첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력하시오.

99

제출한 답

const n = require("fs").readFileSync("dev/stdin");

let count = 0;

for (i = 1; i <= n; i++) {
  i = String(i);
  if (i < 100) {
    count += 1;
  }

  if (Number(i[0]) - Number(i[1]) == Number(i[1]) - Number(i[2])) count += 1;
}
console.log(count);

 

 

  • if (i < 100) { count += 1; } : 100보다 작은 모든 수는 한수입니다. 
  • Number(i[0]) - Number(i[1]) == Number(i[1]) - Number(i[2]) : String 의 index를 이용하여 등차수열을 구할 수 있었습니다.

15596 정수 N개의 합

정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하시오.

이 문제는 자바스크립트는 해당되지 않는 문제였기 때문에 파이썬으로 풀었습니다.

 

제출한 답

def solve(a):
    return sum(a)

 

  • sum() : 함수로 주어진 수들의 합을 구할 수 있습니다.

함수 단계는 여기까지입니다.