20240111

귤금·2024년 1월 11일

Node.js 4기 TIL

목록 보기
10/86

Today?

팀과제 작성

GIT

git 왜 이렇게 어렵지... 정말 다양한 오류들을 마주하고 있다...
분명 push 직전에 pull을 마치고 했다고 생각했는데 한 줄이 엎어쳐져서 당황했다..ㅠㅠ

git에 API 키 가려서 올리는 방법 -> .gitignore
무시할 파일 이름과 경로 적어두면 됨

그리고 "Changes not staged for commit" 오류 발생
해결하기 위해 이유를 알아보니 경로가 달라서 변경된 파일을 인식하지 못해 발생하는 오류라는 듯... 깃 폴더 새로 열어서 커밋하니까 해결되었다.

API

영화 정보와 예고편 정보가 다른 데이터에 들어있었다 ㅠㅠ 둘 다 불러오기 위해 API 두 개를 한 fetch에서 사용하는 방법에 대해 공부 :
Promise.all
두 요청을 동시에 실행하고, 두 요청의 응답이 모두 완료되면 결과를 처리. 각 응답은 JSON으로 변환되고, 최종적으로 콘솔에 출력.


오늘 배운 것

코드카타


1) 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

//내가 짠 코드
let solution = x => {
    let str = `${x}`;
    let sum = str.split('').map(Number).reduce((before, curr)=>before+curr,0);
    if(x%sum){
        return false;
    } else return true
}

//다른 사람 코드 (속도우선)
function solution(x) {
    let num = x;
    let sum = 0;
    do {
        sum += x%10;
        x = Math.floor(x/10);
    } while (x>0);

    return !(num%sum);
}

//다른 사람 코드 (한 줄)
function Harshad(n){
  return !(n % (n + "").split("").reduce((a, b) => +b + +a ));
}

한 줄짜리 코드와 비슷하게 접근하긴 했는데 +b +a처리로 바로 정수로 바꿔버린 건 신기했다. 나는 중간에 map을 추가했는데...
그리고 사실 저렇게 형변환해서 쪼개는 것보다 두번째 코드처럼 숫자형 그대로 더하는 게 더 빠르다고 한다. (당연함)

2) 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.

//내가 짠 코드
let solution = (a,b) => {
    let min = a-b<0?a:b;
    let max = a-b<0?b:a;
    let sum = max*(max+1)/2 - (min-1)*(min)/2;
    return sum;
}

//다른 사람 코드 
function adder(a, b){
    var result = 0
    //함수를 완성하세요
    return (a+b) * (Math.abs(a-b)+1) / 2;
}


//다른 사람 코드 (for)
function adder(a, b, s = 0){
  for (var i = Math.min(a, b); i <= Math.max(a, b); i++) s += i;
  return s;
}

min과 max로 바로 최소/최대를 뽑아낼 수 있다는 걸 알았다...

0개의 댓글