과제 05
https://github.com/wooahan-agile/coding-test-study-3term/pull/54
제일 작은 수 제거하기
https://programmers.co.kr/learn/courses/30/lessons/12935
function solution(arr) {
const answer = [];
arr.forEach((el) => {
if (el !== Math.min(...arr)) {
answer.push(el);
}
});
if (arr.length === 1) {
answer.push(-1);
}
return answer;
}
뭔가 더 효율적인 방법이 있을 것 같다🤔
리뷰
- filter 사용하면 훨씬 효율적임
- for문을 돌려서 찾기보다 filter로 조건에 해당하는 것들만 반환
// 기존 코드
function solution(arr) {
const answer = [];
arr.forEach((el) => {
if (el !== Math.min(...arr)) {
answer.push(el);
}
});
if (arr.length === 1) {
answer.push(-1);
}
return answer;
}
// 멘토님 수정 코드
function solution(arr) {
return (arr.length === 1) ? [-1] : arr.filter((number) => {return number !== Math.min(...arr)})
}
음양 더하기 (for를 사용한 것과 reduce를 사용해서도 풀어보기)
https://programmers.co.kr/learn/courses/30/lessons/76501
// for문
function solution(absolutes, signs) {
let answer = 0;
for (let num in absolutes) {
if (signs[num] === false) {
absolutes[num] *= -1;
}
answer += absolutes[num];
}
return answer;
}
// reduce
function solution(absolutes, signs) {
let answer = 0;
answer = absolutes.reduce((total, nowValue, idx) => {
if (signs[idx] === false) {nowValue *= -1}
return total + nowValue;
}, 0)
return answer;
}
리뷰
- if문 조건식 간결하게 표현
// 기존 코드
if (signs[num] === false) {
// 멘토님 수정 코드
if (!signs[num]) {
이상한 문자 만들기 (대소문자로 변환해주는 메서드 사용하여 풀기)
https://programmers.co.kr/learn/courses/30/lessons/12930
function solution(s) {
let answer = '';
const words = s.split(' ');
for (let word = 0; word < words.length; word++) {
for (let alphabet = 0; alphabet < words[word].length; alphabet++) {
answer =
alphabet % 2 === 0
? answer + words[word][alphabet].toUpperCase()
: answer + words[word][alphabet].toLowerCase();
}
answer += ' ';
}
return answer.slice(0, -1);
}
리뷰
TIL
- reduce
배열.reduce((누적값, 현잿값, 인덱스, 요소) ⇒ { return 결과 }, 초깃값);
- reduce 초깃값을 적지 않으면 첫번째 인덱스값이 초깃값이 되므로 결과가 달라진다.
- 문자열의 마지막 글자 제거
slice(어디서부터, 어디 전까지);
Lesson Learned
잘한 점
- for in과 for of를 구분해서 쓸 수 있게 되었다. 진짜 계속 찾으면서 여러번 보면 눈에 익고 용도에 따라 사용할 수 있게 되는 것 같다. 문제를 풀다 보면 많은 메소드들을 접하게 돼서 조바심도 나고 걱정이 들었지만 그 불편한 마음을 조금 내려놓아도 될 것 같다는 생각이 들었다😄
아쉬운 점
- 문제를 풀 때 이 코드가 효율적이지 않다는 것을 느낀다. 분명 너무 길다. 하지만 어떻게 해야 효율적으로 쓸 수 있는지 아직 잘 모른다,, 코드리뷰 받은 것을 토대로 써봤던 메소드들을 잘 쓸 수 있도록 해야지.
배운 점
'Modern Agile > TIL' 카테고리의 다른 글
Day 08 - 2021.12.15 (0) | 2021.12.16 |
---|---|
Day 07 - 2021.12.14 (0) | 2021.12.15 |
Day 05 - 2021.12.10 (0) | 2021.12.10 |
Day 04 Tech Talk Day🎤 - 2021.12.09 (2) | 2021.12.09 |
Day 03 - 2021.12.08 (0) | 2021.12.08 |