문제 설명
길이가 같은 두 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;
}
더 간단하게 {}를 없애 위의 식으로도 표현할 수 있다
파이어베이스 세팅 코드 작성
<script type = "module"> </script>
스크립트를 모듈타입으로 바꾸면 onclick(), $(document).ready()는 작동하지X
-> 수정 필요 -> $(document).ready() {}에 들어있던 함수를 중괄호에서 벗겨내주기만하면된다.
```
$('#id값').click( async function () {
}
```
데이터 추가(addDoc)
: 저장하고 싶은 데이터를 'key값' : 'value값', 'key값' : value값, 'key값' : value값 ~~으로 저장할 수 있다.
데이터 가져오기(getDocs)
getDocs -> 데이터 붙이기(temp_html , append~)
🔸 스크립트 타입을 모듈화했을때 새로고침 방법
```
window.location.reload();
```
🔸 스크립트 타입을 모듈화했을때 클릭 호출
(스크립트 타입을 모듈로 지정하면 작동을 멈춘다)
```
$('#id값').click( async function () {
}
```
// 데이터 추가
$("#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>