::Assignment::
findSmallestElement 함수를 구현해 주세요.
findSmallestElement 의 arr 인자는 숫자 값으로만 이루어진 배열입니다.
arr 의 값들 중 가장 작은 값을 리턴 해주세요.
만일 arr 가 비어있으면 0을 리턴 해주세요.
예를 들어, 다음과 같은 배열이 인자(input)으로 들어왔다면 1이 리턴 되어야 합니다.
[20, 200, 23, 1, 3, 9]
function findSmallestElement(arr) {
// arr은 숫자
// arr 값 중 가장 작은 값을 리턴
// arr가 비어있으면 0
let min = arr[0];
if (arr.length < 1) {
return 0;
} else {
for (let i = 0; i < arr.length; i++) {
if (arr[i + 1] < min) {
min = arr[i + 1];
}
}
return min;
}
}
function findSmallestElement(arr) {
if( arr.length === 0 ) return 0;
let min = arr[0];
for(let i = 0; i < arr.length; i++) {
if(min > arr[i]) min = arr[i];
}
return min;
}
::Assignment::
divideArrayInHalf 함수를 다음과 같이 구현해주세요.
- divideArrayInHalf 함수는 array를 인자로 받습니다. 이 array는 숫자 값으로 만 구성되어 있으며 총 5개의 요소(element)들로 구성되어 있습니다.
- divideArrayInHalf 함수는 인자로 들어온 array 로 부터 새롭게 구성된 배열 result 을 리턴합니다.
- array 요소들 중 10과 같거나 작은 값의 요소들은 result의 맨 앞으로, 10보다 큰 값의 요소들은 result의 맨 뒤로 재구성된 배열을 리턴 해주세요.
- 재구성이 되는 순서는 array의 맨 뒤 요소부터 맨 앞 요소까지 입니다. 즉, 배열의 뒷 요소 부터 재구성을 진행해주세요.
- 예를 들어, 인자로 들어오는 array가 다음과 같을 때,
[1, 20, 10, 5, 100]
result 배열이 만들어 지는 순서는 다음과 같습니다.
- [100]
- [5, 100]
- [10, 5, 100]
- [10, 5, 100, 20]
- [1, 10, 5, 100, 20]
따라서 아래와 같은 result가 리턴 되어야 합니다.
[1, 10, 5, 100, 20]
function divideArrayInHalf(array) {
let result = [];
for (let i = array.length - 1; i >= 0; i--) {
if (array[i] <= 10) {
result.unshift(array[i]);
} else {
result.push(array[i]);
}
}
return result;
}
function divideArrayInHalf(array) {
let result = [];
for(let i = 4; i >= 0; i--) {
if(array[i] <= 10) result.unshift(array[i]);
if(array[i] > 10) result.push(array[i]);
}
return result;
}
::Assignment::
sliceCityFromAddress 함수를 구현해 주세요.
- sliceCityFromAddress 함수는 address 를 인자로 받습니다.
- address 는 주소를 나타내는 string 입니다.
- 주어진 주소가 어느 도시 인지를 찾아 해당 주소에서 도시 부분만 삭제한 새로운 주소를 리턴해 주세요.
- 도시는 무조건 "시" 로 끝납니다. 예를 들어, "서울시".
- "도" 와 "시" 는 주소에 한번 밖에 포함되어 있지 않습니다.
- 예를 들어, 다음과 같은 주소가 주어졌다면;
"경기도 성남시 분당구 중앙공원로 53"
다음과 같은 값이 리턴되어야 합니다:
"경기도 분당구 중앙공원로 53"
처음에 접근했던 방식은 다음과 같다.
(처음 위치 ~ 공백 위치) + (시의 위치+1 ~ 끝까지)
를 slice를 이용하여 잘라 출력한다.하지만 문제가 발생하였다. 만약 주소에 도가 포함되어 있지 않다면 잘못된 결과가 나오기 때문이다.
그래서
이렇게 변경하였다.
function sliceCityFromAddress(address) {
let result;
let findDo = address.indexOf('도');
let findSi = address.indexOf('시');
// 도가 없으면
if (findDo === -1) {
result = address.slice(findSi+2);
} else {
// 도가 있으면
result = address.slice(0, findDo+1) + address.slice(findSi+1);
}
return result;
}
::Assignment::
nationalPensionRemainingYearCount 함수를 구현해주세요.
- 우리나라는 국민연금을 만 65세 부터 받을 수 있습니다.
- nationalPensionRemainingYearCount 는 age_string 이라는 input을 받습니다.
- age_string 은 나이 값인데 string형 값으로 되어 있습니다.
- 주어진 나이부터 몇년이 지나야 국민연금을 받을수 있는지 리턴 해주세요.
- 리턴 값은 다음과 같습니다.
"앞으로 20년 남으셨습니다"
- 예를 들어, age_string 값이 다음과 같다면:
"35"
리턴 값은 다음과 같아야 합니다.
"앞으로 30년 남으셨습니다"
function nationalPensionRemainingYearCount(age_string) {
// 만 65세
let rest = 65 - age_string;
let result = "앞으로 " + rest + "년 남으셨습니다";
return result;
}
function nationalPensionRemainingYearCount(age_string) {
let age = Number(age_string);
let yearsLeft = 65 - age;
return `앞으로 ${yearsLeft}년 남으셨습니다`;
}
Number - 문자열 => Number
의 특성을 이용하여 Number값을 리턴하였지만, 다른 솔루션에서는 매개변수 값을 Number()
를 이용해 형변환 해준 뒤 계산해주었다.