day 23

JH·2024년 6월 28일

코딩테스트 연습 > 내적

문제 설명
길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.

이때, a와 b의 내적은 a[0]b[0] + a[1]b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)

제한사항
a, b의 길이는 1 이상 1,000 이하입니다.
a, b의 모든 수는 -1,000 이상 1,000 이하입니다.
입출력 예
a b result
[1,2,3,4][-3,-1,0,2] 3
[-1,0,1][1,0,-1] -2
입출력 예 설명
입출력 예 #1
a와 b의 내적은 1(-3) + 2(-1) + 30 + 42 = 3 입니다.
입출력 예 #2
a와 b의 내적은 (-1)1 + 00 + 1*(-1) = -2 입니다.


for반복문으로 a[i]*b[i]를 곱한 값을 구해 더한다.

👉 제출 내역

function solution(a, b) {
    var answer = 0;
    for(i=0; i<a.length; i++) {
        answer += (a[i]*b[i]);
    }
    return answer;
}

➕ 다른 사람들이 풀이한 방법
reduce() :
reduce() 함수는 자바스크립트 배열(Array)의 메서드임
배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 누적된 결과값을 반환함
▪️ 기본 문법 : array.reduce(callback[, initialValue])
▪️ 콜백 함수의 기본 구조 :
function callback(accumulator, currentValue, currentIndex, array) { }

👉 reduce()를 이용한 문제 풀이

function solution(a, b) {
    let answer =a.reduce((acc,cur,idx) => {
       return acc += cur*b[idx]
    },0);
    return answer;
}

a라는 배열로 reduce()실행
reduce()는 acc누적값, cur현재 돌고있는 인자, idx 인덱스번호를 인자로 갖는다
누적값은 0부터 시작해서 (현재 a배열에서 돌고있는 인자) * (b배열에서 인덱스번호에 맞는 인자)를 곱해 모두 더한 값이된다.

function solution(a, b) {
    let answer = a.reduce((acc, cur, idx) => acc + cur * b[idx], 0);
    return answer;
}

더 간단하게 {}를 없애 위의 식으로도 표현할 수 있다


3주차 숙제, 4주차 강의 - firebase, 데이터 저장하기, 데이터 가져오기

  1. 파이어베이스 세팅 코드 작성

  2. <script type = "module"> </script>
    스크립트를 모듈타입으로 바꾸면 onclick(), $(document).ready()는 작동하지X
    -> 수정 필요 -> $(document).ready() {}에 들어있던 함수를 중괄호에서 벗겨내주기만하면된다.

                      ```
                      $('#id값').click( async function () {
                      }
    
                      ```
  3. 데이터 추가(addDoc)
    : 저장하고 싶은 데이터를 'key값' : 'value값', 'key값' : value값, 'key값' : value값 ~~으로 저장할 수 있다.

  4. 데이터 가져오기(getDocs)
    getDocs -> 데이터 붙이기(temp_html , append~)

🔸 스크립트 타입을 모듈화했을때 새로고침 방법

              ```
              window.location.reload();
              ```

🔸 스크립트 타입을 모듈화했을때 클릭 호출
(스크립트 타입을 모듈로 지정하면 작동을 멈춘다)

              ```
              $('#id값').click( async function () {
              }
              ```
              

숙제: JavaScript를 활용하여 동적 데이터 생성하기

  // 데이터 추가
        $("#addBtn").click(async function () {
            let title = $('#foodTitle').val();
            let comment = $('#floatingTextarea').val();
            let image = $('#floatingInput').val();
            
            try {
                const docRef = await addDoc(collection(db, "foods"), {
                    let doc = {
                        'title': title,
                        'comment': comment,
                        'image': image,
                    };
                });
                alert("음식이 추가 되었습니다!");
                window.location.reload();
            } catch (e) {
                console.error("Error adding document: ", e);
            }
        });

위 코드에서 정상 작동되지 X -> let 문법 오류 때문!
자바스크립트에서 객체 리터럴을 사용하여 데이터를 저장하는 방법이 틀린 것

➕ 객체 리터럴(Object Literal)
자바스크립트에서 객체 리터럴(Object Literal)은 중괄호 {}를 사용하여 객체를 직접 정의하는 방식을 의미한다. 객체는 키-값 쌍의 집합으로, 키는 문자열로, 값은 거의 모든 자바스크립트 값(예: 숫자, 문자열, 배열, 함수, 또 다른 객체 등)이 될 수 있다.

자바스크립트에서 객체 리터럴을 사용하여 데이터를 저장하는 방법
🔸 첫 번째 방법

try {
    await addDoc(collection(db, "foods"), {
        title: title,
        comment: comment,
        image: image
    });
} catch (e) {
    console.error("Error adding document: ", e);
}

: addDoc()에 객체 리터럴을 직접 전달

🔸 두 번째 방법

$("#id").click(async function () {
    let doc = {};
   
    doc['name'] = 'bob';
    doc['age'] = 30;

    await addDoc(collection(db, "콜렉션이름"), doc);
});

: 이 코드에서는 let doc = {};로 먼저 빈 객체를 선언한 다음, 동적으로 키-값 쌍을 추가한다.


   <h1 class="display-5 fw-bold" style="font-family: 'Black Han Sans', sans-serif; ">스파르타 푸드파이터
                </h1>
                <p class="col-md-8 fs-4"> 본인만의 맛집을 소개하는 사이트입니다.
                    <br>맛집을 소개해 주세요!
                </p>
<p> 본인만의 맛집을 소개하는 사이트입니다.
<br>맛집을 소개해 주세요!
</p>

전체 글꼴은 style에서 주고 html에서 개별적으로 글꼴을 수정하는 것
import는 스타일에서!
ex: @import url('https://fonts.googleapis.com/css2?family=Black+Han+Sans&family=Gowun+Dodum&display=swap');
구글폰트에서 두 글꼴 모두 장바구니에 넣고 import 코드를 가져오면 둘 다 반영됨

<h1 style="font-family: 'Black Han Sans', sans-serif; ">스파르타 푸드파이터
</h1>
==
<h1> style="" </h1>

0개의 댓글