- 🌈 같은 숫자는 싫어
- 🌈 짝수와 홀수
- 🌈 평균 구하기
- 🌈 핸드폰 번호 가리기
- 📌 삼항연산자
- 📌 reduce()
- 📌 padStart()
- 📌 slice()
// todo: 같은 숫자는 싫어 // 문제 설명 // 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. // 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. // 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, // arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. // arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. // 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 // return 하는 solution 함수를 완성해 주세요. // ! 제한사항 // - 배열 arr의 크기 : 1,000,000 이하의 자연수 // - 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수 // ? 예상결과 // arr [1,1,3,3,0,1,1] // answer [1,3,0,1] //* 나의 풀이 function solution(arr) { var answer = [arr[0]]; // arr의 첫번째 값 answer변수에 넣기 for (let i = 1; i < arr.length; i++) { // 위에서 answer 배열에 arr배열의 첫번째 값을 넣어주었기 때문에 i=1부터 시작 if (arr[i] !== arr[i - 1]) { // arr[i]의 값과 arr[i]의 이전값 비교하여, answer.push(arr[i]); // 값이 서로 같다면 answer 배열에 push 하기 } } console.log(answer); return answer; }
//todo: 짝수와 홀수 //문제 설명 //정수 num이 짝수일 경우 "Even"을 반환하고, //홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. //제한사항 //num은 int 범위의 정수입니다. //0은 짝수입니다. //예상결과 //num = 3; //return "Odd" //solution //if...else 활용 function solution1(num) { let answer = ""; if (num % 2 === 0) { // num이 짝수인지 홀수인지 확인 (나머지를 활용) answer = "Even"; } else { answer = "Odd"; } return answer; } // 삼항연산자 활용 function solution2(num) { let answer = ""; return answer % 2 === 0 ? "Even" : "Odd"; //삼항연사자를 활용하여 나머지 연산이 짝수인지 홀수인지 한줄에 적용. }
// todo: 평균 구하기 // 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. // ! 제한사항 // - arr은 길이 1 이상, 100 이하인 배열입니다. // - arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. // ? 예상결과 // arr = [1,2,3,4] // return 2.5 //* solution 1 // for문 활용 function solution(arr) { var answer = 0; for (let i = 0; i < arr.length; i++) { answer += arr[i]; // answer 변수에 arr 배열의 값들의 합 구하기 } answer = answer / arr.length; // arr 배열의 길이, 즉 값들의 갯수만큼 나누어 평균 구하기 return answer; } //* solution 2 // reduce() 활용 function solution(arr) { const sum = arr.reduce((acc, cur) => { // reduce 메서드를 활용하여, arr배열의 값들의 합을 구하기 return acc + cur; }); return sum / arr.length; // arr 배열의 길이, 즉 값들의 갯수만큼 나누어 평균 구하기 } let arr = [1, 2, 3, 4]; solution(arr);
// todo: 평균 구하기 // 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. // 전화번호가 문자열 phone_number로 주어졌을 때, //전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, //solution을 완성해주세요. // ! 제한사항 // phone_number는 길이 4 이상, 20이하인 문자열입니다. // ? 예상결과 // phone_number : "01033334444" // return : "*******4444" //* solution 1 function solution(phone_number) { var answer = ""; let star = phone_number.length - 4; // 휴대폰번호 끝에서 4자리 시작 인덱스 번호 for (let i = 0; i < phone_number.length; i++) { if (i < star) { // 휴대폰번호 끝에 4자리 인덱스보다 작은 경우, answer += "*"; // "*"로 바꾸기 } else { answer += phone_number[i]; // 끝에 4자리는 원래 번호 그래로 나타내기 } } return answer; } //* solution 2 //2. lecture // 메서드 사용 : padStart(), slice() function solution(phone_number) { let answer = ""; answer = answer.padStart(phone_number.length - 4, "*"); // padStar()메서드 활용하여 번호의 *영역 바꾸기 answer += phone_number.slice(phone_number.length - 4); // slice()메서드 활용하여 휴대폰번호 끝 4자리 나타내기 console.log(answer); return answer; } let phone_number = "01033334444"; solution(phone_number);
조건식을 사용하는 상황에서 if문을 사용할때보다 효과적으로 코드양을 줄이고 가독성을 높일 수 있다.
✅ 구문
(조건식) ? 참일때 작동 : 거짓일때 작동
✅ 예시
let a= 3; let b= 4; let result = (a<b) ? 'true' : 'false' console.log(result) // true
배열에서 사용되는 메서드인데, 배열의 각 요소를 순회하며 callback 함수의 실행 값을 누적하여 하나의 결과를 반환한다.
✅ 구문
arr.reduce(누산값, 현재요소값, 현재요소의index, 현재배열)=>{ return 다음누산값; },초기누산값); arr.reduce(callback(accumulator, currentValue, index, array), initialValue)
누산값 (accumulator)
누적되는 값이며, callback 함수의 반환값을 누적한다.
초기누산값 (initialValue)를 설정한 경우, callback의 최초 호출시 initialValue 값으로 초기화
초기누산값이 없는 경우, arr의 0번 인덱스로 초기화현재요소값 (currentValue)
현재 배열의 요소현재요소의index (index)
생략가능하다!!현재배열(array)
reduce 함수를 호출한 배열초기누산값 (initialValue)
생략가능하다!!
callback의 최초 호출시의 누산값이다.✅ 예시
// 1~10 배열의 모든 값 더하기 const num = [1,2,3,4,5,6,7,8,9,10]; const sum = num.reduce((acc, cur) =>{ return acc + cur }) console.log(sum)
padStart() 메서드는 현재 문자열의 시작을 다른 문자열로 채워, 원하는 문자열을 만들어 반환하는 것이다.
✅ 구문
str.padStart(targetLength, padString)
targetLength
목표 문장의 길이이다.
만약, 현재 문자열의 길이보다 작다면 채워넣지 않고 그대로 반환한다.
padString
(선택)현재 문자열에 채워넣을 다른 문자열이다.
기본값은 ""이다.✅ 예시
cont test = 'abc' test.padStart(10); // " abc" test.padStart(10, "foo"); // "foofoofabc" test.padStart(6,"123465"); // "123abc" test.padStart(8, "0"); // "00000abc" test.padStart(1); // "abc"
slice() 메서드는 어떤 배열의
begin
부터end
까지에 대한 얕은 복사본을 추출한다.
즉, 원본 배열은 바뀌지 않는다.✅ 구문
arr.slice(begin, end)
begin
0을 시작으로하는 추출 시작점에 대한 인덱스이다.
음수로 넣게 된다면, 오른쪽 끝에서부터 적용이 된다.
만약, begin이 undefined라면, 0부터 slice하게 된다.
end
(선택)추출을 종료 할 0기준 인덱스이다.
slice는 end를 제외하고 추출한다!!✅ 예시
let fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'] let citrus = fruits.slice(1, 3) // fruits contains ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'] // citrus contains ['Orange','Lemon']