// 개발자 원두는 피규어를 모으는 취미가 있습니다.
// 프로젝트에 성공하여 상여금을 받은 원두는 이 금액을 온전히 피규어 구매에 사용하고 싶습니다.
// 원두가 모으는 피규어의 가격은 개당 57,000원 입니다.
// 원두가 받게 되는 상여금 money 원이 매개변수로 주어질 때
// 원두가 최대로 살 수 있는 피규어의 개수를 return 하는 solution 함수를 완성해 주세요.
function solution(money) {
return Math.floor(money/57000);
}
solution(230000); // 4
solution(769000); // 13
solution(35000); // 0
팀원분이 일전에 말씀해주신 바닥을 의미하는 floor 함수가 떠올랐다 .. 올려치기!
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
/*
개발자 원두가 열심히 개발을 하다 보니,
조금 출출함을 느껴 편의점에 가 호빵을 사 먹기로 했습니다.
호빵을 혼자 먹을 수는 없고 사무실 직원들과 나누어 먹어야 합니다.
한 팩당 5개가 들어 있는 호빵을 n명의 사무실 직원과 나누어 먹기 위해
최소 몇 팩을 구매해야 하는지 return 하는 solution 함수를 완성해 주세요.
*/
function solution(n) {
return Math.ceil(n/5);
}
//올림 함수 사용했음 ! 접 때 썻던거 멍때리며 5분간 생각하니 떠올랐어요
solution(23); // 5
solution(76); // 16
solution(3); // 1
/*
원두가 근무하고 있는 회사에서 전 직원의 키보드를 새것으로 교체하려고 합니다.
여러 커머스 사이트의 가격을 비교하여 최저가를 찾아야 합니다.
사이트에 고지된 키보드의 가격이 prices 배열에 담겨 매개변수로 주어질 때
가장 저렴하게 구매할 수 있는 가격을 return 하는 solution 함수를 완성해 주세요.
*/
function solution(prices) {
return Math.min(...prices)
}
solution([20000, 113000, 67000, 40500, 99000]); // 20000
solution([19900, 54200, 43000]); // 19900
함수는 떠올렸는데 .. (...array)가 전혀 떠오르지 않아서 시간도 엄청쓰고 풀이를 봤다
...으로 풀어서 하나 씩 넣어준다 그리고 그 중에서 가장 낮은 값을 뽑아내는데 (...prices)로 작성하면 요소가 하나씩 분리되어서
(20000, 113000, 67000~~) 이렇게 되나보다 배열 어려워
/*
원두가 근무하고 있는 회사에서 이달의 직원을 뽑아
상품을 수여하는 이벤트가 개최되었습니다.
각각의 직원들이 받은 투표의 결과가
vote 배열에 사원 번호가 1번인 직원의 득표수부터
순서대로 담겨 매개변수로 주어질 때,
가장 많은 표를 받은 직원의 사원 번호를 return 하는 solution 함수를 완성해 주세요.
*/
function solution(vote){
// 여기에 코드를 작성하세요.
return vote.indexOf(Math.max(...vote)) + 1;
}
solution([5, 2, 0, 1, 0]); // 1
solution([0, 0, 1, 7, 0, 4, 2]); // 4
위 문제를 활용해서 가장 높은 수를 max 함수로 찾고 그에 해당하는 인덱스를 return 해주는데 사원수는 1부터 시작하고 인덱스는 0부터 시작하기 떄문에 1을 더해줬다! 조잡해
/*
개발자 원두는 주말에 새로 식당을 창업한 친구를 도와주기로 했습니다.
식당은 개업 전부터 인기가 많아 대부분의 예약이 완료된 상태입니다.
식당은 장소가 매우 협소하기 때문에
앞으로 신청되는 예약은 여분의 자리가 있는지에 따라서
예약이 가능할 수도 있고 불가능할 수도 있습니다.
현재까지 예약된 손님 리스트 **list**, 수용 가능한 예약자 수 **limit**,
새로 예약 신청된 손님의 수 **reports**가 매개변수로 주어질 때,
현재까지 예약된 손님의 수와 수용 가능한 손님의 수를 고려해
새로 예약을 신청한 손님을 받을 수 있는지를 boolean 타입으로
return하는 함수 solution을 완성하세요.
**제한 사항**
- list는 길이 1 이상 10 이하인 배열입니다.
- list의 원소는 1 이상 5 이하인 정수입니다.
- limit는 1 이상 15 이하인 정수입니다.
- reports는 1 이상 5 이하인 정수입니다.
- **while을 이용해서 문제를 풀어야 합니다.**
*/
function solution(list, limit, reports) {
let i= 0;
let result = 0;
while(i < list.length){
result = result + list[i];
i++;
}
if(result+reports <= limit){
return true;
}else{
return false;
}
}
solution([1, 5, 4, 3], 15, 3); // false
solution([1, 1, 1, 2], 7, 2); // true
반복문도 정말 어렵다 if문이랑 다르게 적응이 안된다
배열 인덱스를 하나하나 사용할 것 이라
while(i가 list.length보다 작으면 실행하라)
는 조건을 주고 실행문에는 result에 배열 0번부터 더해주는데
0 = 0 + 1 [0]
1 = 1 + 5 [1]
6 = 6 + 4 [2]
10 = 10 + 3[3]
이런 험난한 과정을 반복문을 거쳐 배열에 있는 모든 값이 더해진다
어느 덧 13이 된 result는 reports와 더해져
16이 되었고 15자리와 비교하며 같거나 작으면 true 더 크다면 false가 될 운명이다 너는 false야
tip: 큰 수 정렬(리스트)로 해주면 더 빠르게 리턴해줄 수 있다
/*
개발자 원두는 회원들로부터
서비스 이용 동의 리스트를 받아오는 업무를 담당하게 되었습니다.
서비스 이용에 동의하는 회원에게는 “Yes”,
서비스 이용에 동의하지 않는 회원에게는 “No”를 각각 입력받아야 하는데
어떠한 에러로 인해서 “Yes”를 선택한 회원으로부터는 숫자 1을,
“No”를 선택한 회원으로부터는 숫자 0을 받아오는 상황이 발생했습니다.
개발자 원두는 좀 더 직관적으로 회원들의 동의 여부를 알고 싶어서
숫자 1이 입력된 회원은 동의했다는 의미의 “Yes”,
숫자 0이 입력된 회원은 동의하지 않았다는 의미의 ”No”로 바꾸어 리스트를 재구성하려고 합니다.
회원들의 동의 여부가 담겨 있는 숫자 배열 **list**가 매개변수로 주어질 때,
회원들의 동의 여부를 “Yes” 또는 “No”로 바꾸어 구성된 배열을 return 하는
solution 함수를 완성하세요.
*/
function solution(list) {
let result = [];
for(i=0;i<list.length;i++){
if(list[i] === 1){
result.push('Yes');
}else{
result.push('No');
}
}
return result;
}
solution([1, 0, 0, 1]);
// ["Yes", "No", "No", "Yes"]
solution([1, 1, 1, 1, 0, 1]);
// ["Yes", "Yes", "Yes", "Yes", "No", "Yes"]
for(i는 배열의 시작인 0 부터고 i가 list.length보다 작을 동안 실행해줘 그리고 반복문을 한번 순회하면 i에 1을 더해줘!)
만약 list[i]가 1과 같다면 result 배열의 끝에 문자열인 Yes를 추가해줘 ! 그 외에는 문자열 No를 배열의 끝에 추가해줘!
웩
/*
개발자 원두는 재무팀 입사 동기에게 다른 업체들로부터 받아야 할 돈을
자동으로 계산해줄 수 있는 프로그램을 만들어달라고 부탁받았습니다.
계산서에는 업체마다 받아야 할 금액들이 배열 형태로 적혀 있습니다.
원두는 해당 업체에서 받을 금액의 합계를 계산하는 프로그램을 만들어야 합니다.
금액들이 나열된 2차원 배열 bill이 주어질 때,
각 업체에게 받을 금액의 합계를
배열에 순서대로 담아 return 하는 함수 solution을 완성하세요.
*/
function solution(bill) {
let arr=[];
for(let i=0;i<bill.length;i++){
let num1 = 0;
for(let j=0;j<bill[i].length;j++){
num1 = num1 +bill[i][j];
}
arr.push(num1);
}
return arr;
}
solution([
[1000, 500, 800],
[600, 200, 200],
]);
// [2300, 1000]
solution([
[1, 2],
[3, 3, 4, 5, 6],
]);
// [3, 21]
끝이 보인다 .. 하지만 2차원 배열이라니 for문 안에 for문을 썻다 지웠다 반복하다 결국 풀이를 보았는데..
구조는 위 for문들과 비슷한데 2차원이라 어려웠다
틀은 잘 잡았는데 안에 반복할 코드가 어려웠고
일단 차근차근 다시 보면서 이해해보자
bill[0]의 내부에 있는 배열에 모두 접근해 더해줘야 하고
그리고 더한 값을 보관할 num을 선언해 준다
ㅏㅣㅓㅠㅅㄹ하ㅗㅓㅚㅎ료혀ㅣㅑㅙㅓ
/*
개발자 원두는 조만간 있을 회사 창립기념일을 위해
창립기념일 파티에 초대할 사람들에게 메일을 보내려고 합니다.
초대자 명단을 받은 원두는 격식을 차리기 위해 초대자 이름 뒤에
”님”을 붙여서 메일을 전송해야 합니다.
초대자 명단이 담겨 있는 배열 **nameList**가 매개변수로 주어질 때
각 초대자 이름 뒤에 “님”을 추가한 배열을 return 하는 함수 solution을 완성하세요.
*/
function solution(nameList) {
return nameList = nameList.map(name => name+'님');
}
solution(["병건", "호민", "풍"]);
// ["병건님", "호민님", "풍님"]
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/map
map함수를 활용하니 편하게 해결 했고 map(매개변서 => 실행 할 코드)를 적어주니 매개변수에 '님'이 붙어서 nameList의 요소 하나 하나 접근해 주었다 성공적이다
침펄풍 사랑해요
/*
개발자 원두는 어느 날부턴가 회사의 직원 외의 인물이 회사 내부 네트워크망에
접속하는 것 같은 의심이 들기 시작했습니다.
회사의 내부 네트워크망은 회사의 IP 주소로만 접속이 가능해야 하므로
원두는 네트워크망에 로그인하는 회원의 IP 주소를 수집하여
외부 스파이의 접속을 차단하고자 합니다.
네트워크망에 접속한 회원의 IP 주소가 담긴 배열 **userList**와,
접속 가능한 회사 IP 주소 **ip**가 매개변수로 주어졌을 때,
허용되지 않는 IP 주소로 접속한 회원의 IP 주소를 나열한 배열을
return 하는 함수 solution을 완성하세요.
*/
function solution(userList, ip) {
return userList.filter(user => user !== ip)
}
solution(
["123.123.02", "123.123.02", "432.223.07", "123.173.08"],
"123.123.02"
);
// ["432.223.07", "123.173.08"]
solution(
["228.093.22", "228.093.22", "228.093.22"],
"228.093.22"
);
// []
얘도 위와 마찬가지로 mdn에서 filter 함수의 구조를 보고 풀었다
map과의 차이점이 있다면 배열을 변형해준다는 것이다
이름처럼 필터이기에 조건에 따라 요소를 걸러내서 리턴해준다
내 인생에서 걸러내고 싶은 것도 필터로 걸러내고 싶다
컴퓨터가 부럽다
/*
개발자 원두는 랜덤으로 바코드 숫자를 만들어주는 기능을 개발하고 있습니다.
바코드는 0부터 9까지의 숫자 13자리로 이루어져 있습니다.
바코드에 들어갈 숫자들이 담긴 배열이 주어질 때
모든 0을 배열의 끝으로, 나머지는 순서를 유지한 배열을 return하는 함수 solution을 완성해주세요.
*/
function solution(barcode){
const arrZero = [];
const arrNum = [];
const arr = barcode.map(function(num){
if(num == 0){
arrZero.push(num);
}else{
arrNum.push(num);
}
});
return [...arrNum, ...arrZero];
}
solution([8, 8, 0, 1, 2, 3, 4, 5, 6, 0, 1, 0, 5]);
// [8, 8, 1, 2, 3, 4, 5, 6, 1, 5, 0, 0, 0]
solution([0, 7, 6, 0, 0, 4, 6, 9, 0, 2, 5, 0, 1]);
// [7, 6, 4, 6, 9, 2, 5, 1, 0, 0, 0, 0, 0]
토나오는 2차배열을 벗어나니 숨ㅁ통이 트인다
머리는 이해하는데 말은 안나오고 바보가 된 기분
함수를 변형시켜도 되고 변형시키지 않아도 될 것 같지만 기존 함수는 유지 시키기 위해.. map을 사용했고
num이라는 매개변수와 if문을 이용해 요소 하나하나를 0인지 아닌지 구분해서 각각 0만 보관할 배열과 그 외의 것을 보관할 배열에 차곡 차곡 쌓아주었다
그리고 내가 맞게 이해했는진 모르겠지만 ...은 배열을 분해해주는 느낌이라 [] 한 배열 안에 두개의 배열에 ...을 써줬고
그렇게 앞에는 0 외 숫자 뒤에는 0이 나열 된 배열을 완성할 수 있었다다라
/*
개발자 원두는 선배 개발자와 함께 협업하여
페이지를 리뉴얼하는 작업을 시작했습니다.
첫날에는 함께 업무 분담을 해서 잘 진행하고 있었는데,
두 번째 날부터는 어째서인지 회사에서 선배 개발자를 볼 수가 없게 되었습니다.
선배가 원두를 피해서 회사 어딘가에 숨었을 것이라고 직감한 원두는
회사를 전부 뒤져서라도 선배 개발자의 위치를 찾아내려고 합니다.
회사 각각의 방을 나타내는 지도에
선배 개발자의 위치가 1로 표시된 2차원 배열 **map**이 주어질 때,
선배 개발자가 위치한 방의 숫자와 몇 번 자리에 있는지를 찾아
**”선배님은 x번 방, y번 자리에 있습니다.”** 라는 문구를 return 하는 solution 함수를 완성하세요.
만약, 선배 개발자의 위치를 찾지 못한 경우에는
**”선배님을 찾을 수가 없습니다.”** 라는 문구를 return 해주세요.
*/
function solution(map) {
for (let 방 = 0; 방 < map.length; 방++) {
for (let 자리 = 0; 자리 < map[방].length; 자리++) {
if (map[방][자리]) {
// index는 0부터 시작하므로 결과에 1을 더합니다.
return `선배님은 ${방 + 1}번째 방, ${자리 + 1}번째 자리에 있습니다.`;
}
}
}
return "선배님을 찾을 수가 없습니다.";
}
solution([[0, 0], [0], [0, 1, 0], [0, 0]]);
// “선배님은 3번째 방, 2번 자리에 있습니다.”
solution([[0], [0, 0], [0], [0, 0], [0, 0]]);
// “선배님을 찾을 수가 없습니다.”
return 문제의 답을 찾을 수가 없습니다 && 시간도 없음
미안해요 여러분