✔️ 3주차에 1주차 시험문제 다시 풀어보기
-
getGender
인자로 사람에 대한 정보가 담긴 객체를 받습니다.
그 중 성별을 반환하는 함수를 만들어주세요.
input 예시 : { name: 'tom', age: 30, gender: 'male' }
input 예시 : { name: 'tom', age: 30, gender: 'male' }
// test objects
let inputValue = {
name: 'tom',
age: 30,
gender: 'male'
}
// 답
function getGender(person) {
return person.gender
}
getGender(inputValue) // 'male'
- Dot Notation(object.key)을 이용해 value값을 구함.
getThirdElement
인자로 반드시 길이가 2 이상인 배열이 들어옵니다.
배열의 세번째 요소를 반환하는 함수를 구현해주세요.
function getThirdElement(arr){
return arr[2];
}
getThirdElement([1, 2, 3]); // 3
isFemaleAndAdult
성인이면서 여성일 경우에만 true를 반환하는 함수를 구현해주세요.
함수는 인자를 하나 받으며 항상 아래와 같은 객체가 들어옵니다.
input 예시 : { name: 'tom', age: 30, gender: 'male' }
* @param {Object} person - person info
* @param {string} person.name - name of person
* @param {number} person.age - age of person
* @param {string} person.gender - gender of person
* 'male'이 남성, 'female'이 여성을 의미합니다.
* 19세까지는 미성년자, 20세부터는 성인으로 가정합니다.
// test objects
let inputValue1 = { name: 'tom', age: 30, gender: 'male' }
let inputValue2 = { name: 'jane', age: 20, gender: 'female' }
let inputValue3 = { name: 'lilly', age: 14, gender: 'female' }
// 답
function isFemaleAndAdult(person) {
if( 19 < person.age && person.gender === 'female'){
return true
}
return false
}
isFemaleAndAdult(inputValue1) // false
isFemaleAndAdult(inputValue2) // true
isFemaleAndAdult(inputValue3) // false
- 동등연산자를 사용하는 gender의 경우 value가 string형으로 들어온다는 조건이 있으므로 "==="(일치연산자)를 사용했다.
getFirstTwoElements
함수는 인자를 하나 받으며 배열이 들어옵니다.
배열의 길이가 3이상일 때, slice를 사용하여 앞에서 2개만 잘라 반환합니다.
배열의 길이가 2이하일 때, "배열이 너무 짧아요!" 라는 string을 반환합니다.
// test arrays
const arr1 = [1, 2, 3]
const arr2 = [5, 6]
// 답
function getFirstTwoElements(arr) {
if ( 3 <= arr.length ){
return arr.slice(0, 2)
}else if(arr.length <= 2){
return "배열이 너무 짧아요!"
}
}
getFirstTwoElements(arr1) // [ 1, 2 ]
getFirstTwoElements(arr2) // '배열이 너무 짧아요!'
getSumOfArray
배열은 길이가 1이상이며 모든 요소가 숫자로 되어있습니다.
배열 모든 요소의 합을 반환하는 함수를 구현해주세요.
// test arrays
const arr1 = [1 ,2 ,3, 4, 5]
const arr2 = [100, 200, 300]
// 답
function getSumOfArray(arr){
let num = 0;
for( i = 0 ; i < arr.length ; i++ ){
num += arr[i]
}
return num
}
getSumOfArray(arr1) // 15
getSumOfArray(arr2) // 600
findMaleName
배열에서 남성을 찾아 그 이름을 반환하는 함수를 만들어주세요.
함수는 인자로 객체가 요소인 배열을 받습니다.
배열의 요소는 각 사람에 대한 객체이며 아래는 배열의 예시입니다.
const arr1 = [
{ name: 'sera', age: 30, gender: 'female' },
{ name: 'tom', age: 10, gender: 'male' }
]
const arr2 = [
{ name: 'jane', age: 30, gender: 'female' }
]
배열에는 남성이 없거나 오직 한 명만 있습니다.
배열에 남성이 없다면 false를 반환해주세요.
'male'이 남성, 'female'이 여성을 의미합니다.
function findMaleName(arr) {
for ( i = 0 ; i < arr.length ; i++ ){
if ( arr[i].gender === 'male' ){
return arr[i].name
}
}
return false
}
findMaleName(arr1) // 'tom'
findMaleName(arr2) // false
이 문제를 풀다가 현우님과 '남자가 여러명이면?'이라는 조건을 붙여 수정해봤다.
const arr = [
{ name: 'sera', age: 30, gender: 'female' },
{ name: 'tom', age: 10, gender: 'male' },
{ name: 'belle', age: 30, gender: 'female' },
{ name: 'jack', age: 20, gender: 'male' },
{ name: 'dan', age: 70, gender: 'male' },
]
function findMaleName(arr) {
let maleArr = [];
for ( i = 0 ; i < arr.length ; i++ ){
if ( arr[i].gender == 'male' ){
maleArr.push(arr[i].name)
}
}
return maleArr
}
findMaleName(arr) // [ 'tom', 'jack', 'dan' ]
불과 3주전엔 머리를 쥐어짜고 겨우 풀었던 문제인데 지금은 술술 풀어진다.
지금의 나는 한 달전의 나보다 성장했구나.
'D.evelop [CS] > Algorithm' 카테고리의 다른 글
[Algorithm 010] JS - moreThanHalf (0) | 2021.10.02 |
---|---|
[Algorithm 009] JS - romanToNum (0) | 2021.09.27 |
[Algorithm 007] JS - sameReverse (0) | 2021.09.16 |
[Algorithm 006] JS - reverse (0) | 2021.09.14 |
[Algorithm 005] JS - twoSum (0) | 2021.09.14 |
댓글