문제 

Given an array, rotate the array to the right by k steps, where k is non-negative.

 

 

입출력

Example 1:

Input: nums = [1,2,3,4,5,6,7], k = 3

Output: [5,6,7,1,2,3,4]

Explanation:

rotate 1 steps to the right: [7,1,2,3,4,5,6]

rotate 2 steps to the right: [6,7,1,2,3,4,5]

rotate 3 steps to the right: [5,6,7,1,2,3,4]

 

Example 2:

Input: nums = [-1,-100,3,99], k = 2

Output: [3,99,-1,-100]

Explanation:

rotate 1 steps to the right: [99,-1,-100,3]

rotate 2 steps to the right: [3,99,-1,-100]

 

 

제약

Constraints:

  • 1 <= nums.length <= 10^5
  • -2^31 <= nums[i] <= 2^31 - 1
  • 0 <= k <= 10^5

 

 

코드

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {void} Do not return anything, modify nums in-place instead.
 */
 
var rotate = function(nums, k) {
    if(k>nums.length) k %= nums.length;
    let temp = nums.splice(-k, k);
    nums.unshift(...temp);
};

 

 

 

문제 

Given an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order.

 

 

입출력

Example 1:

Input: nums = [-4,-1,0,3,10]

Output: [0,1,9,16,100]

Explanation: After squaring, the array becomes [16,1,0,9,100]. After sorting, it becomes [0,1,9,16,100].

 

Example 2:

Input: nums = [-7,-3,2,3,11]

Output: [4,9,9,49,121]

 

 

제약

Constraints:

  • 1 <= nums.length <= 10^4
  • -10^4 <= nums[i] <= 10^4
  • nums is sorted in non-decreasing order.

 

 

코드

var sortedSquares = function(nums) {
    for(let i=0; i<nums.length; i++) {
        nums[i] = Math.pow(nums[i], 2);
    }
    return nums.sort((a, b) => a-b)
};

 

 

 

arr.sort(): 배열 재정렬

  -  배열 자체가 변경됨. 주의하기!

  - 인수로 정렬 로직을 담은 함수를 받음

let numArr = [1, 5, 4, 2, 3];

numArr.sort();

console.log(numArr); // [1, 2, 3, 4, 5] 

 

let charArr = [‘a’, ‘c’, ‘d’, ‘e’, ‘b’];

charArr.sort();

console.log(charArr); // [“a”, “b”, “c”, “d”, “e”]

 

let arr = [27, 8, 5, 13];

arr.sort();

console.log(arr); // [13, 27, 5, 8]

  →  정렬할 때 요소를 문자열로 취급하기 때문에 원하는 결과가 나오지 않음

 

let arr2 = [27, 8, 5, 13];
	arr2.sort((a, b) => {
	return a - b;
});

console.log(arr2); // [5, 8, 13, 27]

  →  인수로 정렬 로직이 담긴 함수를 넣어 원하는 결과를 도출

 

 

Lodash 라이브러리

ex) _.sortBy(arr);

↓ 참고 사이트

https://lodash.com/

 

 

arr.reduce(): 인수로 함수를 받고 실행시켜 하나의 결과값을 반환

  -  (누적 계산값, 현재값) => { return 계산값 };

 

ex)  배열의 모든 수 합치기

let arr = [1, 2, 3, 4, 5];

const result = arr.reduce((prev, cur) => {
	return prev + cur;
}, 0) //0은 초기값

console.log(result); // 15 출력 → 1+2+3+4+5


const result2 = arr.reduce((prev, cur) => {
	return prev + cur;
}, 10) //10은 초기값

console.log(result2); // 25 출력 → 10+1+2+3+4+5

 

ex) 

let userList = [
	{ name: 'Baby', age: 10 },
	{ name: 'Angel', age: 30 },
	{ name: 'Noonsong', age: 27 }
];

let result = userList.reduce((prev, cur) => {
	if(cur.age >19) {
		prev.push(cur.name);
	}
	return prev;
}, []);

console.log(result); //[“Angel”, ”Noonsong”] 출력

 

 

arr.reduceRight(): reduce()와 동일하지만 배열의 오른쪽에서 왼쪽 순으로 수행

 

 

  ※  상황에 맞게 filter, reduce, forEach, … 을 사용할 줄 알아야 함

 

 

 

 

↓[코딩앙마] 자바스크립트 중급 강좌 링크

https://www.youtube.com/watch?v=RW25tEAMC9w 

 

 

+ Recent posts