180918 TIL Lec2 학점계산기
Sep 18, 2018
»
1막,
TIL (Today I Learned)
STEP1 과제 학점계산기 수정
- 개인적으로 생각하는 하드코딩 끝판왕 파트는 아래 grade별 점수이다.
// convert letter grades to points (4.5) function convertGrade(grade) { let result = 4.5; if (grade === 'A') { result -= 0.5; } else if (grade === 'B+') { result -= 1; } else if (grade === 'B') { result -= 1.5; } else if (grade === 'C+') { result -= 2; } else if (grade === 'C') { result -= 2.5; } else if (grade === 'D+') { result -= 3; } else if (grade === 'D') { result -= 3.5; } else if (grade === 'F') { result -= 4.5; } return result; } // convert letter grades to points (4.3) function convertGrade2(grade) { let result = 4.3; if (grade === 'A') { result -= 0.3; } else if (grade === 'A-') { result -= 0.6; } else if (grade === 'B+') { result -= 1; } else if (grade === 'B') { result -= 1.3; } else if (grade === 'C+') { result -= 2; } else if (grade === 'C') { result -= 2.3; } else if (grade === 'C-') { result -= 2.6; } else if (grade === 'D+') { result -= 3; } else if (grade === 'D') { result -= 3.3; } else if (grade === 'D-') { result -= 3.6; } else if (grade === 'F') { result -= 4.3; } return result; }
- 피드백 받기로는 객체에 넣어서 활용하라고 하여 아래처럼 수정하였다.
function calculatePoints(data) {
let grossPoints = 0;
let grossMajorPoints = 0;
tableFourPointZero = {
'A+': 4.3,
'A': 4.0,
'A-': 3.7,
'B+': 3.5,
'B': 3.0,
'B-': 2.7,
'C+': 2.5,
'C': 2.0,
'C-': 1.7,
'D+': 1.5,
'D': 1.0,
'D-': 0.7,
'F': 0,
}
for (let i in data) {
for (let key in data[i]) {
if (key === 'grade') {
grossPoints += (data[i].credit * tableFourPointZero[data[i][key]]);
if (data[i].major) {
grossMajorPoints += data[i].credit * tableFourPointZero[data[i][key]];
}
}
}
}
return [grossPoints, grossMajorPoints];
- 4.5기준으로 구한 값을 기준이 바뀌었을 때 어떻게 변환하는 지가 문제였는데 새라&반에게 도움을 요청하여 구할 수 있었다.
만약 점수가 4.3 기준으로 구한 점수가 B+ 3.5인데 4.5 기준으로 바꿔서 계산하고 싶다면, 4.3으로 나눠서 기준이 1일 때의 값을 구한 다음 4.5를 곱해주면 되는 것이다!! 까오!!!!!!!
- 코드가 훨씬 짧아져서 만족스럽다.
- 그러나 2차 피드백….
1. 4.3? 이네요. 왜 기준이 4.5가 아니죠? --> 기준이 4.5과 4.0이었는데 왜 4.3을 한거지?? 2. for for if if 로 중첩된 코드는 복잡한 문제가 쌓인 것과 같아요. indent를 없애서 구현하는 걸 생각해보실래요? --> ..... 이거 넘 어렵다.... 어제 리오는 고차함수?를 활용해보라고 했는데, 좀 더 고민해봐야할 듯 3. const와 let의 차이를 공부하시고, const를 먼저 쓰고 안되면 let을 써보세요. --> 무의식적으로 let을 더 많이 썼는데 습관을 바꿔야겠다~ 4. 이름에 구체적인 표현을 한건 좋은데, 죄송하게도... 전 이름에 숫자가 섞여 있으니 더 보기 어려운 거 같긴합니다 ㅎ(뭐라고 이름을 지어야 할지는 어렵지만요 --> 4.3기준 이라는 걸 영어로 gpaFourPointThree로 했는데 어려워 보인다고 하니... 흠 흠 흠 고민을 좀 더 해봐야겠다
객체
- 모던 웹.. 교재로 오랜만에 객체 파트를 공부하였다.
git commit
- 진정으로 git commit을 활용하는 법을 익혔다. 함수를 완성할 때마다 커밋을 하는 것! 그러면 나중에 오류가 발견됐을때 예전 커밋으로 돌아갈 수 있다. 맨 첨엔 이게 더 귀찮게 느껴졌는데 하다보니 좋은듯!
비동기
- 책을 봐도 대충 그렇구나~ 생각은 드는데 그래서 이걸 어떻게 하라고? 라는 생각밖에…
9/17 (Mon) DONE
알고리즘 문제 풀기 (2) - 전에 푼 문제 디벨롭L2 객체 ~ STEP1 (가능하면 PR까지)
9/18 (Tue) To-Do
- 객체 메서드 더 공부(책 참고)
- Step1 PR feedback 반영
- setTimeout & 비동기 강의 공부
- 시간 되면 알고리즘 1문제