💡 오늘 배운 것
Math.min / indexOf() / splice() / reverse()
// if, else로 배열이 빈 문자열, 그렇지 않을때의 조건문을 만들기
//비어있을 때는 리턴은 -1을 해준다
// 그렇지 않을때는 제일 작은수를 Math.min으로 구하고 그 숫자의 인덱스 값을 빼준다.
function solution(arr) {
const answer = [];
if(arr.length <= 1){
return [-1]
}else {
arr.splice(arr.indexOf(Math.min(arr)),1)
// arr에서 제일 작은거 찾아서 인덱스 찾아서, 1개 빼기(라고 생각)
answer === arr;
}
return answer;
}
왜 하나만 맞냐..
1.
function solution(arr) {
// 1. 제일 작은 수 찾기
let minimum = arr[0]; //제일 작은 값을 저장하는 변수
for (let i = 1; i , arr.length; i++){
if (arr[i] < minimum){
//현재 저장되어 있는 제일 작은값보다 더 작은 값이 있는 경우
// 더 작은 값을 갱신 )=재할당
minimum = arr[i]
}
}
// 2. 제일 작은 수 제거
for(let i = 0; i < arr.length; i++){
if(arr[i] !== minimum){
answer.push(arr[i])
}
}
// 3. 빈 배열인지 체크
if (answer.length === 0){
answer.push(-1)
}
return answer
}
2.
function solution(arr) {
// 1. 제일 작은 수 찾기
let minimum = arr[0]; //제일 작은 값을 저장하는 변수
for (let i = 1; i , arr.length; i++){
if (arr[i] < minimum){
//현재 저장되어 있는 제일 작은값보다 더 작은 값이 있는 경우
// 더 작은 값을 갱신 )=재할당
minimum = arr[i]
}
}
// 2. 제일 작은 수 제거
for(let i = 0; i < arr.length; i++){
if(arr[i] !== minimum){
answer.push(arr[i])
}
}
// 3. 빈 배열인지 체크
return answer.length === 0?[-1] : answer;4
}
3. Math.min 메서드 사용하기
배열을 이 메서드에서 사용하면 NaN값이 나온다. 배열이라서!
그래서 배열을 먼저 풀자. (...arr) ➡️ 스프레드 연산자
function solution(arr) {
// const answer = [];
//가장 작은수 찾기
const minimum = Math.min(...arr);
console.log(minimum)
//작은거 제거
const answer = arr.filter(el => {
return el !== minimum;
})
//삼항연산자로 빈배열 체크
return !answer.length ?[-1] : answer
}
splice
1. 원하는 위치 인덱스 값의 데이터를 제거하거나, 추가한다
2. 원본이 변경된다. (주의하기!) slice로 얕은복사를 한번 해준다.
3. 리턴값은 제거된 데이터의 배열
arr. splice (어디서부터자를건지, 몇개제거?, 변경할 값)
위 이미지는 slice로 복사를 했는데, 저 자리에 [...arr]로 배열 복사가 가능하다.
//출력값을 담아줄 빈 배열을 만들고
//리버스 함수를 이용해서 빈배열에 담아주기
function solution(n) {
const answer = [n].reverse()
}
하다보니.. 그냥 answer에 바로 reverse 함수 적용시켜서 쓰면 되는거 아닌가? 했음. 틀림
1. 반복문 반대로 돌리기
function solution(n) {
n = String(n)
const answer = [];
for (let i = n.length -1; i >= 0; i --){
answer.push (Number(n[i]) );
}
return answer;
//문자열, 배열에서만 인데스값 사용 가능하다.
}
2. 배열 메서드 reverse() + map
//숫자 타입의 n을 문자타입을 바꾸자.
function solution(n) {
return String(n).split("").reverse().map(el => { return Number(el) })
}
리턴, 중괄호 빼도 가능.