[JavaScript] 배열에서 연속적인 숫자 뽑아내기
·
JavaScript
실생활에서 자주 접할 수 있는데, 비밀번호, 아이디, .... (자주..? 는 아닐지도)에서 패턴 반복을 막기 위해서 사용할 경우가 있다. 정규식을 사용하면 간단하게 해결할 수 있는 문제일 수 있지만, 만약 0 ~ 9까지만 숫자가 있는게 아닌 0 ~ 100000000000 이라면? ( 과장을 보탰다. 실제로 저기서 뽑는다면 엉청 오래걸릴지도...) 정규식으로 어썸하게 해결하는 정규식 굇수분들이 있을 수 있지만 본인은 못하기 때문에 반복문을 사용해서 해결하였다. function func(array, goal) { for(let i = 0; i < array.length; i ++) { let cnt = 1; let num = array[i]; while(true) if(array.includes(++num..
객체 정렬하기
·
JavaScript
코딩을 하다보면 빈번하게 객체를 정리 해야하는 경우를 만나게 된다. 배열의 경우엔 Sort 함수를 사용하면 되지만 객체의 경우엔 몇 가지 제약이 있다. 기본적으로 Object를 저장형 데이터로 사용할 경우에는 Object를 사용하기 보단 Map을 사용하는 것이 좋다. 어쩔수 없이 Object를 사용하는데 정렬이 필요할 때 참고 바랍니다! 다양한 해결 방법이 있었는데, 그중 하나를 정리한다. let object = { a : 20, b : 30, c : 40, d : 35, } 형식의 객체가 있다고 했을 때 Value를 기준으로 정리하는 방식이다. const sortObject = []; for(const item in object) { sortObject.push([item, object[item]]);..
[알고리즘] 배열끼리 비교해서 배열의 포함 관계 확인하기
·
알고리즘/풀이 힌트
0. 들어가며 프로그래머스 후보키를 풀다가 배열이 다른 배열에 포함되는지 확인해야하는 상황이 발생했다. 생각보다 자주 사용되서 정리를 해보았다. 1. 사용 방식 [ 1, 2, 10, 30, 40 ]이란 배열이 있을 때, [ 2, 10, 30 ] 이란 배열이 포함되는지 확인할 때 사용한다. 2. 코드 구현 const answer = [ 1, 2, 10, 30, 40 ]; const key = [ 2, 10, 30 ]; let check = true; const set = new Set([...key, ...answer]); if (set.size === answer.length) { check = false; } key와 answer을 포함하는 set을 사용해서 구현하였다. set은 내부에 속성이 중복이 ..
[JavaScript] 원하는 크기의 2차원 배열 만들기
·
JavaScript
0. 들어가며 자바스크립트로 개발을 하다 보면 배열이 5개의 배열을 가지고 있는 형식으로 만들 때가 있다. 예를 들어 제공되는 것이 " N : 3 "이 끝이고 배열이 3개의 배열을 가지고 있는 이차원 배열을 만들 때가 있다. 그럴 경우, const arr = []; for(let i = 0; i [] ); 이렇게 사용하면 간단하게 원하는 사이즈의 2차원 배열을 만들 수 있다.
[알고리즘] 기준이 되는 배열로 만들 수 있는 모든 배열을 만들기
·
알고리즘/풀이 힌트
0. 들어가며 프로그래머스 후보키를 풀다가 기준이 되는 배열을 가지고 크기가 2, 3, 4 , ... 모든 경우의 배열을 만들어야 했는데 이런 경우도 생각보다 많이 나와서 한번 정리해보았다. 1. 사용 방식 [ 1, 10, 30, 50, 100, 300 ]인 기준 배열이 있다면 기준 배열을 가지고 [ 1 ], [ 10 ], [ 30 ], ... [ 300 ], [ 1, 10 ], [ 1, 30 ], ... [ 1, 10, 30, 50, 100, 300 ] 의 배열을 만든다. 한번에 만들 수 있지만, 원하는 크기의 배열을 만드는 방식으로 작업했다. 2. 코드 구현 const obj = []; const numberArr = [ 1, 10, 30, 50, 100, 300 ]; function makeArr(..
[알고리즘] 배열을 반복해 순차적으로 값을 변경 및 수정하기
·
알고리즘/풀이 힌트
0. 들어가며 프로그래머스 순위 탐색 문제를 풀다가 배열을 참조해서 순차적으로 배열을 변경하는 경우가 의외로 많이 있는 것 같아서 정리하였다. 1. 사용 방식 예를 들어 [a, b, c, b, e]라는 배열이 있는데, 이것을 [-, b, c, d, e], [-, -, c, d, e], ... [a, b, c, d, -] 순으로 모든 경우의 수를 다 만들어야 하는 상황이 있을 것이다. 그럴 경우에 반복문을 통해서 만들어도 되지만 그렇게 만들려면 배열의 길이는 고정되야하고 배열의 속성 개수에 따라 반복문 개수도 변경되기 때문에 일반적으로 재귀함수를 사용한다. 2. 코드 구현 const info = [ "java backend junior pizza 150", "python frontend senior chi..
[TypeScript] Tuple Type
·
TypeScript/기초
Tuple Type? Tuple Type은 array에 붙일 수 있는 타입인데, 자료의 위치까지 정확하게 지정할 수 있는 타입이다. let anything : [string, boolean]; anything = ['test', true]; [] 괄호 안에 타입을 적으면 Tuple Type이 된다. type Num = [number, number?, number?]; let num1 :Num = [10]; let num2 :Num = [10,20]; let num3 :Num = [10,20,30]; Tuple 안에서도 물음표를 사용해서 옵션이라고 표현을 할 수 있다. type Num = [number, number?, number]; 하지만 물음표 옵션은 제일 마지막부터 순차적으로 붙일 수 있으며, 중간..
[알고리즘] 신고 결과 받기
·
알고리즘
문제 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송한다. 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지 후 정지 메일을 발송합니다. 다음은 전체 유저 목록이 ["muzi", "frodo", "apeach", "neo"]이고, k = 2(즉, 2번 이..