/*
입사 후 열심히 일하고 있던 개발자 원두는
본인이 사내 시스템에 등록되어 있지 않은 것을 이제야 깨달았습니다.
다급해진 원두는 직접 자신의 이름을 등록하려고 합니다.
각 팀의 명단을 담은 객체 **team**이 주어질 때
“원두”를 개발팀에 추가하여 return하는 함수 solution을 완성해주세요.
*/
function solution(team) {
team.dev.push('원두');
return team;
}
solution({ dev: ["카페", "라떼"] });
// {dev: ["카페", "라떼", "원두"]}
push로 추가해줬따
/*
사내 시스템에 이름을 등록한 원두는
잘 등록되었는지 확인하기 위해서 개발팀의 명단을 출력해보려고 합니다.
각 팀의 명단을 담은 객체 **team**이 주어질 때
개발팀의 명단을 배열로 return하는 함수 solution을 완성해주세요.
*/
function solution(team) {
return team.dev != undefined ? team.dev : -1;
}
solution({ dev: ["카페", "라떼", "원두"] });
// ["카페", "라떼", "원두"]
solution({ mento: ["은정", "세준", "아라"] });
// -1
solution({ dev: [], operation: ["시윤"] });
// []
삼항연산자가 떠올라 처리해주었따
/*
원두는 사내 볼링 대회의 등수별 수상자의 상품을 정리하고 있습니다.
등수별 수상자의 인원이 적힌 객체 winners가 주어질 때,
해당 등수를 수상할 인원의 수에 맞게
배열에 담아 return하는 함수 solution을 완성해주세요.
예를 들어, 1위가 2명, 2위가 1명이라면 [1, 1, 2] 형태로 return해주세요.
*/
function solution(winners) {
let arr = [];
for (let el in winners){
console.log(winners[el]) // 오른쪽 값을 출력 이 문제에선 반복 할 숫자가 됨
console.log(winners) //객체의 key, value 모두 출력 이 문제의 경우 key가 3개이기 때문에 세번을 출력하는 모습
console.log(el) // 왼쪽 키를 출력 문자열 따로 표시 되어있지 않지만 문자열임 이 문제에선 배열에 넣어줄 값이 됨
for(let i=0; i < winners[el]; i++){
arr.push(Number(el))
}
}
return arr
}
solution({
1: 1,
2: 2,
3: 4,
});
// [1, 2, 2, 3, 3, 3, 3];
for...in 문법을 사용했는데 for in을 사용할 떄 안에서 요소들이 어떤 값을 갖고 있는지 많이 확인해봤다
하지만 저 객체는 너무 작은 정보를 담고 있기 때문에
더 큰객체를 찾아 떠난다!
위 부터 winner[el], winners, el 를 순서대로 출력해 본 값이다
/*
개발자 원두는 워크샵에 다녀올 팀을 뽑으려 합니다.
특이한 방식을 좋아하는 회사 대표는 원두에게
팀을 만들어서 인원이 홀수가 되는 팀을 데려가겠다고 합니다.
사람들은 팀 번호 1부터 5까지 적힌 종이를 뽑게 되며,
사람들이 뽑은 숫자가 배열에 담기게 됩니다.
예를 들어 첫 번째 사람이 2를 뽑고 두 번째 사람이 5를 뽑고 세 번째 사람이 5를 뽑은 경우,
[2, 5, 5]의 배열이 주어지게 되며 이 안에서 2는 한 명, 5는 두 명이 나왔기 때문에
2를 뽑은 팀이 워크샵에 당첨됩니다.
사람들이 뽑은 숫자를 담은 배열 **arr**가 주어질 때,
워크샵에 가게 되는 팀의 숫자를 return 하는 함수 solution을 완성하세요.
*/
function solution(arr){
const obj = {};
arr.map((el) => {
if(obj[el] == undefined){
obj[el] = 1
}else{
obj[el] = obj[el] + 1;
}
}
);
const valueArr = Object.values(obj)
const resultValue = valueArr.filter((el)=>el%2 == 1)[0];
const keyArr = Object.keys(obj)
const resultKey = keyArr.filter((el) => obj[el] == resultValue)
return Number(resultKey)
}
solution([1, 2, 2, 1, 1]); // 1
solution([5, 1, 2, 2, 5, 3, 3, 1, 5]); // 5
solution([2, 4, 3, 3, 2, 4, 1]); // 1
풀이를 보고 다음날 혼자 풀어보는 걸 목표로 했고
map과 filter 같은배열 관련 메서드와 좀 친해진 기분
과정을 먼저 설명하자면
map함수를 이용해서 배열을 모두 돌아서 key:value를 가진 객체를 만들어 주었고
출력해보자면 이런 결과가 나오는데 if문을 이용한 이유는 새로 들어온 키의 밸류가 비어서 1을 채워주는 것 0 > 1로 가는 과정을 카운트 하기 위함이다
그 다음에 새로운 숫자가 들어오면 객체를 만들때 대괄호 부분은 문자열로 표시하지 않아도 문자열로 인식하기 때문에 새로운 key가 생기고
기존 에 만들어진 key의 경우는 정수가 1씩 더해지는 것이다
그렇게 배열들은 객체로 하나가 되었고
밸류배열을 만들어서 obj객체의 밸류만 모아준다 필터로 홀수인 배열을 걸러낸다 그것을 resultValue 에 담아준다
키배열을 만들어서 키만 나열해주고 기존에 만들어놓은 obj객체에서 resultValue와 동일한 밸류를 가진 오브젝트의 키 값을 찾아서 resultKey에 담아주고 그것을 리턴했다
문제에 의문점도 많았고 이런 방식보다 훨씬 좋은 방식이 있을 것 같았지만 풀이법을 아무리 찾아도 모르는 나는 영상의 문제풀이를 따라갔다
무지하면 배우고 따라가야지..
/*
개발자 원두는 공용 냉장고에 푸딩을 넣어놨습니다.
하지만 다음날 출근해보니 푸딩이 사라지고 말았습니다.
푸딩이 정말 먹고 싶었던 원두는 CCTV를 확인하여
범인은 팀원 중 가장 늦은 시간에 냉장고를 이용한 사람이라는 것을 알게 되었습니다.
원두는 이 범인을 잡고자 합니다.
팀원의 이름과 냉장고 사용 시간을 객체 형태로 담은 배열이 arr로 주어질 때,
“범인은 바로 @@@입니다!”를 return하는 함수 solution을 완성하세요.
*/
function solution(arr){
let timeArr = [];
arr.forEach((el) => timeArr.push(el.time))
console.log(timeArr);
const maxTime = Math.max(...timeArr)
console.log(maxTime);
const maxTimeObj = arr.filter((el) => el.time == maxTime)
console.log(maxTimeObj)
const result = [];
maxTimeObj.forEach((el) => result.push(el.name))
console.log(result)
return "범인은 바로 " + result + "입니다!";
}
solution([
{
name: "카페",
time: 15,
},
{
name: "모카",
time: 12,
},
{
name: "라떼",
time: 10,
},
{
name: "아라비카",
time: 16,
},
]);
// "범인은 바로 아라비카 입니다!"
이 문제도 위와 비슷한 방식으로 풀었다
간단히 가보자면 객체의 time 부분만 배열로 만들어줬고 가장 큰 수를 찾았다
가장 큰 수를 이용해 time에 동일한 객체를 가져와 가장큰시간객체 에넣었다
여러개일수도 있으니까 배열을 만들었고 가장큰시간객체의 name부분만 푸시하여 result배열에 추가해주고 리턴했다