오늘의 삽질
아이템 시뮬레이터 과제
-
오늘은 팀이 새롭게 편성되어 아이스브레이킹 시간을 지니며 팀 노션을 작성하였다.
-
추가로 조장님이 Github의 Pull request를 응용하여 코드리뷰 하는 방법을 설명해 주셨다!
=> branch를 분리한 후, 회의시간에 Pull request를 통해 dev branch에 병합 시,
변경사항을 한눈에 보기 쉽고 comments를 각자 달 수 있기에 원활하게 코드리뷰를 진행할 수 있다!
개선점 분석
- 저녁 식사 이후 회의가 끝나면, 과제 진행보단 자료정리를 하며 계획을 세우는 방향으로 진행해야겠다.
지식창고
Client-Server Model
기본 발표 자료
추가 보충사항
-
클라이언트와 서버의 가변성
- 클라이언트와 서버라는 역할은 정보적 측면에서 언제나 바뀔 수 있는 역할이다.
네이버 페이에 결제를 신청하면, 내가 신청하는 앱은 클라이언트 / 신청을 받는 네이버 페이는 서버 이다.
그러나 네이버 페이가 이 정보를 가지고 결제 관련 은행에 서비스를 신청하면,
네이버 페이 = 클라이언트 / 은행 = 서버 의 새로운 역할이 만들어진다! -
게임서버의 주요 역할
-
게임 및 플레이어의 상태 관리와 동기화
-
게임 내 로직 처리
-
게임 데이터, 유저 데이터의 저장과 보안관리
-
알고리즘 코드 카타
모의고사
-
문제
1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때,
가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요. -
조건
-
시험은 최대 10,000 문제로 구성되어있습니다.
-
문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
-
가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.
-
function solution(answers) {
let answer = [];
let tester = [0, 0, 0];
let best = 0;
for (let i = 0;i < answers.length;i++) {
if (answers[i] === (i) % 5 + 1) tester[0]++
if (i % 2 === 0 && answers[i] === 2) tester[1]++
else if (answers[i] === i % 8 && i % 8 <= 3) tester[1]++
else if (answers[i] === 4 && i % 8 === 5 ) tester[1]++
else if (answers[i] === 5 && i % 8 === 7 ) tester[1]++
if (answers[i] === 3 && i % 10 < 2) tester[2]++
else if (answers[i] === 1 && i % 10 < 4 && i % 10 >= 2) tester[2]++
else if (answers[i] === 2 && i % 10 < 6 && i % 10 >= 4) tester[2]++
else if (answers[i] === 4 && i % 10 < 8 && i % 10 >= 6) tester[2]++
else if (answers[i] === 5 && i % 10 < 10 && i % 10 >= 8) tester[2]++
}
best = Math.max(...tester)
tester.forEach((val,idx) => {
if (best === val) answer.push(idx+1)
})
return answer;
}
- 다른 코드 분석
function solution(answers) {
var answer = [];
var a1 = [1, 2, 3, 4, 5];
var a2 = [2, 1, 2, 3, 2, 4, 2, 5]
var a3 = [ 3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
var a1c = answers.filter((a,i)=> a === a1[i%a1.length]).length;
var a2c = answers.filter((a,i)=> a === a2[i%a2.length]).length;
var a3c = answers.filter((a,i)=> a === a3[i%a3.length]).length;
var max = Math.max(a1c,a2c,a3c);
if (a1c === max) {answer.push(1)};
if (a2c === max) {answer.push(2)};
if (a3c === max) {answer.push(3)};
return answer;
}
코드 분석
3~5 : 수포자의 패턴을 배열화
7~9 : [i % a1.length]는 패턴의 수만큼 나눠서 비교하기 위함, 및 뒤에 .length로 정답의 갯수를 셈(filter 메서드는 조건이 일치시에만 배열이 추가됨)
10~14 : 제일 많이 푼 인원을 비교하여 오름차순으로 결과에 추가