본문 바로가기

Reduce

(6)
[프로그래머스] Lv1. 최소직사각형 (javascript) 다양한 사이즈의 명함을 넣을 수 있는 최소 직사각형의 크기 구하기 제한사항 sizes의 길이는 1 이상 10,000 이하입니다. sizes의 원소는 [w, h] 형식입니다. w는 명함의 가로 길이를 나타냅니다. h는 명함의 세로 길이를 나타냅니다. w와 h는 1 이상 1,000 이하인 자연수입니다. 나의 풀이 각 명함의 사이즈(sizes)들 중 큰 값을 w, 작은 값을 h 로 각각 저장 w와 h의 최댓값을 구하여 곱함 function solution(sizes) { const {w, h} = sizes.reduce((a, b) => { b.sort((a, b) => +a > +b ? -1 : 0); a['w'].push(+b[0]); a['h'].push(+b[1]); return a; }, {w: [..
[해커랭크] (Data Structures - Arrays) Array Manipulation (javascript) 배열의 구간 최대합 구하기 에러케이스 수정 중 누적값 알고리즘 prefixSum(구간합) 발견하여 참고함 조건 n개의 배열(arr)은 인덱스가 1부터 시작 쿼리(queries)는 query를 인자를 가지는 배열로 query= [a, b, k] (이때, a,b는 index, k는 값) 주어진 두 개의 인덱스(a-b)사이에 값(k)를 추가 해당 배열의 최댓값을 반환 제한사항 3 ≤ n ≤ 10⁷ 1 ≤ m ≤ 2 * 10⁵ 1 ≤ a ≤ b ≤ n 0 ≤ k ≤ 10⁹ 나의 풀이 단순 풀이만이 아니라 생소한 구간합 이라는 알고리즘을 처리해야 하기 때문에 샘플데이터를 기반으로 풀이 n = 5, m = 3, querie는 아래와 같음 a b k 1 2 100 2 5 100 3 4 100 일반 로직대로 풀이하면 ..
[해커랭크] (Data Structures - Arrays) 2D array - DS; 모래시계 행렬 (javascript) 6x6 행렬의 배열이 주어질 때, 아래 모래시계배열의 합의 최댓값을 구하라 a b c d e f g 조건 입력값은 int arr[6][6] 각 배열을 순차적으로 돌면서 모래시계 배열의 합이 최댓값인 경우 반환 아래 행렬이 주어진 경우, 모래시계배열은 그림 1.과 같이 표현될 수 있음 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 2 4 4 0 0 0 0 2 0 0 0 0 1 2 4 0 제한사항 -9 ≤ arr[i][j] ≤ 9 0 ≤ i, j ≤ 5 나의 풀이 2중 배열을 단일 배열(const lines)로 변환하여 수행 n 중 배열을 단일배열화하는 법 arr.join(',').split(',') 모래시계의 배열은 3x3 배열이므로 배열길이의 -2만큼만 반복을 수행하며 행렬을 순..
[CSS,JS] 동적 색상값(HEX) 얻기 디자이너 없이 작업할 경우 간혹 다양한 컬러값이 필요한 경우가 있다. (토이프로젝트, 백오피스 데모 같은) 근무하는 동안에도 몇 번 활용했고, 토이프로젝트에서도 활용하게 되어 기록하고자 한다. #1. 랜덤 hex 생성의 기본 로직 hex를 생성하는 랜덤함수는 아래와 같다. const hex = '#' + Math.round(Math.random() * 0xffffff).toString(16); 무작위성 난수가 필요하므로 Math.random() 을 이용하여 0~1사이의 랜덤값 추출 0xffffff 값 (수) 만큼 값을 곱하여 n개의 정수 추출 Math.round() 를 이용하여 소수점 제외 난수로 얻은 값의 미세한 값변화를 필요로하지 않는다면 Math.ceil, Math.floor 모두 사용가능 .toS..
[해커랭크] Day 4: Classes Polygon class 만들기 조건 생성자는 polygon 변수 만큼 길이값 배열을 받음 perimeter() 메소드는 polygon의 둘레값을 전달 나의 풀이 class Polygon {} 생성 points : polygon 변 길이 배열 constructor 생성 this.points에 인자로 받은 points 바인딩 peremeter 메소드 생성 reduce를 이용하여 둘레 계산 /* * Implement a Polygon class with the following properties: * 1. A constructor that takes an array of integer side lengths. * 2. A 'perimeter' method that returns the sum of the ..
[해커랭크] Day3: Arrays (javascript) 숫자배열 중 두번째로 큰 수 추출하기 조건 getSecondLargest 함수를 수정하여 두번째로 큰 수를 전달하라. parameters int nums[n]: 정수 배열 Returns int: nums 에서 두번째로 큰 수 제한사항 1 ≤ n ≤ 10 0 ≤ nums[i] ≤ 100, i는 index nums의 숫자는 중복일 수 있음. 나의 풀이 nums 배열에서 가장 큰 수를 추출 (max) nums 배열을 순회하며 max 가 아닌 값 중 가장 큰 수를 추출 reduce 함수를 이용하여 바로바로 값을 비교처리함 // 생략... /** * Return the second largest number in the array. * @param {Number[]} nums - An array of number..