본문 바로가기

프로그래밍/알고리즘, 프로그래밍 언어35

[JavaScript] arguments object (객체) arguments 객체란? arguments 객체 : 함수 호출 시, 전달인자들이 배열 형태로 저장된 객체 함수 호출 시 전달인자와 함께 arguments 객체가 함수내부로 전달됨 function test () { console.log('arguments[0]', arguments[0]) console.log('arguments[1]', arguments[1]) console.log('arguments[2]', arguments[2]) } test(1,2) // arguments[0] 1 // arguments[1] 2 // arguments[2] undefined test(1,2,3) // arguments[0] 1 // arguments[1] 2 // arguments[2] 3 arguments 객체.. 2021. 12. 8.
[JavaScript] 배열에서 중복 엘리먼트 제거하기 1. Set 메소드 Set 객체로 중복 데이터 제거하기 문법 : new Set(데이터) let arr = [1,1,2,2,2,3,3] let newArr = [...new Set(arr)] console.log(newArr) // [1, 2, 3] 2. filter, indexOf 메소드 indexOf 메소드는 조회할 값이 처음으로 등장한 인덱스를 리턴 let arr = [1,1,2,2,2,3,3] let newArr = arr.filter((el, idx) => arr.indexOf(el) === idx) console.log (newArr) // [1, 2, 3] 3. reduce, includes 메소드 reduce 메소드로 각 엘리먼트를 조회하되, 초기값은 빈 배열로 입력하기 includes 메소.. 2021. 12. 4.
[JavaScript] 날짜 입력 시 요일을 리턴하는 함수 만들기 연도는 2007년으로 가정했을 때, 날짜(MM-DD)를 입력 시 요일을 반환하는 함수 function day 구현하기 조건 매개변수 : Month, Date 정보가 String 형태로 전달 출력 값 형태 : SUN, MON, TUE, WED, THU, FRI, SAT 2007년 1월 1일은 월요일 입출력 예시 day("1 1") // "MON" day("3 17") // "SAT" 코드 작성 방법 1 split 메소드로 매개변수를 month과 date로 나누기 new Date(날짜) 메소드로 해당 날짜와 요일 정보 얻기 getDay 메소드로 해당 날짜에서 요일 배열의 인덱스를 얻기 getDay 메소드의 요일 배열은 일요일을 0번 인덱스, 토요일을 6번 인덱스로 전제함 function day(str) { .. 2021. 12. 3.
비동기 데이터 처리 순서 : 콜백함수 vs Promise Promise 내부에서 Promise와 콜백함수 중 어떤 데이터가 빠르게 처리될지 테스트 해보았다. 1. 코드 - axios 요청 이후 3개의 then 문을 사용하였다. - 첫 번째 then 문에서는 또 다른 axios 요청을 보냈다. - 이 axios 요청과 두~세번째 then 문 중 어떤 데이터를 더 빠르게 처리할지 디버깅을 해보았다. axios // AJAX 요청 .get(`${process.env.REACT_APP_SERVER_URL}/career/1`, { withCredentials: true, }) .then(res => { // 첫번째 then // axios 내부에서 추가로 AJAX 요청 axios .get(`${process.env.REACT_APP_SERVER_URL}/career/1.. 2021. 11. 11.
async을 사용했지만 콜백함수의 await에서 에러가 나는 경우 SyntaxError: await is only valid in async function 서버 API 제작 중, 함수 내에서 await을 사용할 수 없다는 에러 메세지가 발생했다. 함수 앞에 async를 붙였는데도 말이다. 원인 및 해결방안 - 함수 앞에는 async 를 기재했지만 에러 발생 - 함수 내부의 콜백함수에서 await 문법을 사용하기 위해서는, 콜백함수 앞에도 async를 붙여줘야 함 // 에러 코드 module.exports = async (req, res) => { // 함수 앞에 async 기재 Job.findAll( {where:{companyId:0}} ) .then((data)=>{ // 아래 await 사용으로 인해 에러 발생 let jobInfo = await Job.find.. 2021. 11. 10.
[알고리즘] BFS/DFS (JavaScript) 자료구조 설명 - BFS (Breadth-First Search 너비 우선 탐색) : 가까운 정점부터 탐색므로, 주로 Queue와 함께 사용 - DFS (Depth-First Search 깊이 우선 탐색) : 한 정점 깊이의 끝까지 탐색하므로, 주로 재귀와 함께 사용 예시 문제 - 문제 : 무방향 간선들이 주어질 때 연결된 정점의 그룹들이 몇 개인지 반환하는 함수 작성하기 (connectedVertices) - 전달인자(edges) : 배열 형태로 표현된 시작 점과 도착 점을 엘리먼트로 갖는 2차원 배열 - 출력 값 : 그룹들의 수를 Number 타입으로 리턴 connectedVertices([[0, 1],[2, 3],[3, 4],[3, 5],]); // 2 인접 리스트 코드 작성 코드 작성 포인트 1... 2021. 9. 30.
[알고리즘] GCD를 이용하여 과자를 공평하게 분배하기 문제 조건 - 아몬드 빼빼로 M개와 누드 빼빼로 N개를 모든 직원들에게 공평하게 나누어주기 - 각 직원들은 종류별로 똑같은 수의 빼빼로를 받아야 함 - 직원 수에 따라 빼빼로를 나누어 주는 솔루션 구하기 전달 인자와 출력값 - 전달인자1 : number 타입의 양의 정수 M (1 ≤ M ≤ 1,000,000,000) - 전달인자2 : number 타입의 양의 정수 N (1 ≤ N ≤ 1,000,000,000) - 출력값 : 2차원 배열 리턴 - 출력값의 엘리먼트 : [빼빼로를 받는 직원 수, 나누어 주는 아몬드 빼빼로의 수, 나누어 주는 누드 빼빼로의 수] 코드 작성 포인트 1. 빼빼로를 받는 직원의 수 : 최대공약수의 약수 2. 나누어 주는 빼빼로의 수 : M/(직원 수), N/(직원 수) 3. 최대공.. 2021. 8. 23.
[알고리즘] 유클리드 호제법 : 최대공약수(GCD)와 최소공배수(LCM) 용어 설명 최대공약수 (Greatest Common Divisor) : 공통된 약수 중 가장 큰 수 최소공배수 (Least Common Multiple) : 공통된 배수 중 가장 작은 수 유클리드 호제법 : 두 수가 서로 상대방의 수를 나누어서 결국 원하는 수를 얻는 알고리즘 최대공약수(GCD) 구하기 (JavaScript) 2개의 자연수 a, b(a > b)에 대해서, a를 b로 나눈 나머지가 r일 때, a와 b의 최대공약수는 b와 r의 최대공약수와 같다 // 최대 공약수를 구하는 함수 (유클리드 호제법: Euclidean algorithm) function gcd(m, n) { if (m % n === 0) return n; return gcd(n, m % n); } gcd(m,n) // m과 n의 .. 2021. 8. 23.
반응형