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 |