Lami
삶이 온통 사람의 길이니
Lami
전체 방문자
오늘
어제
  • 분류 전체보기 (165)
    • Elice (1)
      • 회고록 (1)
    • Git (0)
    • HTML ▪ CSS (4)
    • JavaScript (7)
      • BOJ (2)
      • Programmers (0)
      • Study Note (5)
    • TypeScript (0)
    • React (21)
      • Lecture (19)
      • Study Note (2)
    • Python (44)
      • CodeUp (38)
      • Programmers (0)
      • Study Note (6)
    • Modern Agile (80)
      • Tech Talk (7)
      • TIL (73)
    • 문제해결 (1)
    • 회고록 (5)
    • 도란도란 (2)

블로그 메뉴

  • Github

공지사항

  • 👋 안녕하세요!

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Lami

삶이 온통 사람의 길이니

Modern Agile/TIL

Day 07 - 2021.12.14

2021. 12. 15. 00:26

Day 07 - 2021.12.14

https://github.com/wooahan-agile/coding-test-study-3term/pull/65

과제 06

예산, 체육복

https://github.com/wooahan-agile/coding-test-study-3term/pull/64

모의고사

https://github.com/wooahan-agile/coding-test-study-3term/pull/65

 

예산

https://programmers.co.kr/learn/courses/30/lessons/12982

function solution(d, budget) {
    let answer = 0;
    let totalPrice = 0;
    
    d.sort((a, b) => {return a-b});
    for (let part in d) {
        if (totalPrice + d[part] <= budget) {
            totalPrice += d[part];
            answer += 1;
        }
    }
    return answer;
}

 

체육복

https://programmers.co.kr/learn/courses/30/lessons/42862

function solution(n, lost, reserve) {
  const student = [];

  // 여벌 체육복이 있는 학생 번호에서 도난학생 번호를 뺐을 때 절댓값이 1이 되는 번호가 있는지
  for (let lostStudent in lost) {
    for (let reserveStudent in reserve) {
      // 있다면 reserve에서 원소 삭제
      if (Math.abs(lost[lostStudent] - reserve[reserveStudent]) === 1) {
        console.log(lost[lostStudent], reserve[reserveStudent]);
        reserve.splice(reserve[reserveStudent], 1);
        console.log(lost, reserve);
        break;

        // 없다면 전체 학생 수 - 1 => 마지막 return은 n
      } else {
        n - 1;
      }
    }
  }
  return n;
}

// 코드 출처 - https://laycoder.tistory.com/202
// 참고 - 원 코드에서 18번 테스트 케이스 통과가 안 돼서 lost와 reserve를 정렬하는 코드를 넣었더니 통과됨
// function solution(n, lost, reserve) {
//     lost = lost.sort();
//     reserve = reserve.sort();
//     // 체육복을 잃어버렸으면서 여벌이 없는 경우
//     const realLost = lost.filter((element) => !reserve.includes(element));

//     // 여벌이 있으면서 체육복을 잃어버리지 않은 경우
//     let realReserve = reserve.filter((element) => !lost.includes(element));

//     // 학생 수(n) - 잃어버린 학생이 여벌을 못받은 경우(realLost.filter)
//     return (
//         // realLost.filter((lost) : 잃어버린 사람 중 여벌을 받을 수 없는 학생을 배열로 반환
//         n -
//         realLost.filter((lost) => {
//             // lend : 체육복을 빌려줄 수 있는 경우 중 첫 번째 요소
//             const lend = realReserve.find(
//                 // 잃어버린 사람의 1칸 주위에 빌릴 사람이 있는 경우
//                 (reverse) => Math.abs(reverse - lost) == 1,
//             );

//             // 빌려줄 수 있는 사람이 없으면 진짜 잃어버린 걸로 간주하고 lost를 return
//             if (!lend) return lost;
//             // 빌려 줬으면 reserve 배열에서 빌려준 사람 제외
//             realReserve = realReserve.filter((reverse) => reverse !== lend);
//         }).length
//     );
// }

 

모의고사

https://programmers.co.kr/learn/courses/30/lessons/42840

function solution(answers) {
  const result = [];
  const supoza = [
    [1, 2, 3, 4, 5],
    [2, 1, 2, 3, 2, 4, 2, 5],
    [3, 3, 1, 1, 2, 2, 4, 4, 5, 5],
  ];
  const score = [0, 0, 0];

  for (let answer = 0; answer < answers.length; answer++) {
    for (let supozaNum = 0; supozaNum < supoza.length; supozaNum++) {
      if (
        answers[answer] === supoza[supozaNum][answer % supoza[supozaNum].length]
      ) {
        score[supozaNum] += 1;
      }
    }
  }

  for (let supozaNum in score) {
    if (score[supozaNum] === Math.max(...score)) {
      result.push(Number(supozaNum) + 1);
    }
  }
  return result;
}

 

리뷰

  • 멘토님이 수정해주신 코드
function solution(answers) {
  const result = [];
  const supoza = [
    [1, 2, 3, 4, 5],
    [2, 1, 2, 3, 2, 4, 2, 5],
    [3, 3, 1, 1, 2, 2, 4, 4, 5, 5],
  ];
  const score = [0, 0, 0];

  for (let answer = 0; answer < answers.length; answer++) {
    for (let supozaNum = 0; supozaNum < supoza.length; supozaNum++) {
      (answers[answer] === supoza[supozaNum][answer % supoza[supozaNum].length]) && (score[supozaNum] += 1);
    }
  }

  score.forEach((supoza, idx) =>{
     (score[idx] === Math.max(...score)) && result.push(Number(idx) + 1);
  })
  return result;
}
  • if문을 하나만 쓴다면 아래처럼 수정 가능
// 내가 쓴 코드
if (
        answers[answer] === supoza[supozaNum][answer % supoza[supozaNum].length]
      ) {
        score[supozaNum] += 1;
      }

// 수정해주신 코드
(answers[answer] === supoza[supozaNum][answer % supoza[supozaNum].length]) && (score[supozaNum] += 1);
  • for문을 forEach로 바꿔서 사용
// 내가 쓴 코드
for (let supozaNum in score) {
    if (score[supozaNum] === Math.max(...score)) {
      result.push(Number(supozaNum) + 1);
    }
  }

// 수정해주신 코드
score.forEach((supoza, idx) =>{
   (score[idx] === Math.max(...score)) && result.push(Number(idx) + 1);
  })

TIL


Lesson Learned

잘한 점

아쉬운 점

  • 시간을 효율적으로 쓰도록 노력하자!!!

배운 점

'Modern Agile > TIL' 카테고리의 다른 글

Day 09 Tech Talk Day🎤 - 2021.12.16  (0) 2021.12.16
Day 08 - 2021.12.15  (0) 2021.12.16
Day 06 - 2021.12.13  (0) 2021.12.13
Day 05 - 2021.12.10  (0) 2021.12.10
Day 04 Tech Talk Day🎤 - 2021.12.09  (2) 2021.12.09
    'Modern Agile/TIL' 카테고리의 다른 글
    • Day 09 Tech Talk Day🎤 - 2021.12.16
    • Day 08 - 2021.12.15
    • Day 06 - 2021.12.13
    • Day 05 - 2021.12.10
    Lami
    Lami
    성장하는 즐거움을 알아가는 중입니다🌱

    티스토리툴바