
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.
1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...
1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.
시험은 최대 10,000 문제로 구성되어있습니다.
문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.
function solution(answers) {
var answer = [];
var s1 = [1, 2, 3, 4, 5];
var s2 = [2, 1, 2, 3, 2, 4, 2, 5];
var s3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
var score = [0, 0, 0];
for (i = 0; i < answers.length; i++) {
if (s1[i % s1.length] === answers[i]) {
score[0]++;
}
if (s2[i % s2.length] === answers[i]) {
score[1]++;
}
if (s3[i % s3.length] === answers[i]) {
score[2]++;
}
}
var max = Math.max(...score);
for (j = 0; j < score.length; j++) {
if (score[j] === max) {
answer.push(j + 1);
}
}
return answer;
}
수포자들이 찍는 방식의 패턴과 채점표를 각각 배열로 변환 후 answers의 길이만큼 반복문을 돌려 맞힌 횟수만큼을 각각의 score에 입력함. 이후 가장 많은 문제를 맞힌 사람을 배열에 담아서 return.
ORM(Object Relation Mapping)중 하나, Javascript 객체(Object)와 데이터베이스의 관계(Relation)를 연결(Mapping)해주는 도구.
=> Node.js에서는 다양한 ORM이 존재하지만 Prisma가 TypeScript에서도 사용할 수 있고 ORM 개념 학습에 쉬움.
ORM은 여러 관계형 데이터베이스(RDB)를 사용할 수 있음.
| Prisma | mongoose |
|---|---|
| ORM(객체와 데이터베이스의 관계를 연결) | ODM(객체를 Document와 연결) |
| 다양한 데이터베이스를 지원 | MongoDB만 지원 |
| Model의 형태로 테이블의 속성을 설정 | Schema의 형태로 컬렉션에 대한 속성을 설정 |
JOIN과 UNION 연산자를 동시에 사용하는 복잡한 쿼리를 작성할 경우, ORM으로 구현하기 위해 SQL 보다는 ORM을 더 깊게 이해해야 하는 상황이 발생할 수 있고, 이로인해 원인과 결과가 뒤집힌 상황이 발생할 수도 있음.
서브 쿼리를 포함하는 복잡한 쿼리를 작성하거나, ORM의 SQL로 변환해주는 시간 조차 아까운 극한의 성능을 요구하는 쿼리가 필요한 상황에서는 Raw Query를 사용하는 것이 더욱 좋을 수 있음.
Prisma가 어떤 데이터베이스와 어떻게 연결할지를 알려주는 중요한 정보.
URL내부에는 데이터베이스 엔진 유형, 사용자 아이디, 패스워드 같은 정보가 포함.

postgresql, sqllite, mysql과 같은 데이터베이스 엔진을 정의합니다.<Id>:<Password>@<RDS Endpoint>:<Port>의 형태로 구성됩니다.
내가 맡은 부분은 회원가입~캐시 구매까지 계정에 관한 내용들이었다.
강의 자료를 완전히 다보고 구현한게 아니라 못 본 부분이 있었어서 좀 많이 헤맷다. 강의 자료를 다시 보고 구글링을 하면서 코드를 작성하였고, 위의 오류가 안뜰때 유저 데이터를 저장해서 회원가입이 되는 식으로 구현했다.
user_id와 password를 입력받아 서버에 저장된 데이터를 확인하고 해당 값이 맞으면 jwt토큰을 받고 로그인에 성공하게 구현했다.
입력받은 id값으로 해당 id에 대한 데이터를 조회하게 만들었지만...이미 토큰으로 인증받은 상태이기 때문에 따로 값을 입력해주지 않아도 토큰을 발급받은 id에 대한 데이터가 조회되게 만들어졌다.
일단 작성을 해봤는데 오류가 나서 월요일에 확인해보고 다시 작성할 예정이다.
중요한 부분은 아니고 단순하게 하라셔서 단순하게 만들었다.
계정조회와 마찬가지로 id와 cash값을 입력받아 cash를 추가하는 식으로 구현해줫지만, 마찬가지로 토큰으로 인증 받은 상태이기 때문에 id값은 입력하지 않고 cash값만 입력해줘도 구매가 가능했다.