This is a auto push repository for Baekjoon Online Judge created with BaekjoonHub.
- 2차원 배열을 만들고 그 값을 채울때 => new Array().fill()를 사용하지 않는다.
- 이유는 fill 메소드는 얕은 복사로 값을 채우기 때문에 같은 주소값을 가지고 모든 행에 같은 값이 들어간다.
- 배열안에 값을 서로 바꾸는 문제일 경우 temp 사용대신 forEach(([a,b])=>{[arr[a] , arr[b]] = [arr[b] , arr[a]]})로 쉽게 바꿀 수 있다.
- 프로그래머스 level0 수열과 구간 쿼리 3
- 문자열의 특정 인덱스 부분을 수정하고 싶을때
- slice로 수정부분을 구하고
- splice를 사용하여 기존 문자열을 수정한다.
- level0 문자열 여러번 뒤집기
- 진법 변환을 하고 싶을때
- parseInt에는 변환하고자 하는 숫자(혹은 문자)와 그 값을 표현하고 있는 진법을 입력해주면 된다. => 그러면 10진수로 변환된다.
- .toSting(num): 정수를 지정된 진법 num로 문자열 변환
- 이진탐색 문제에서 LIS 배열 알고리즘
- 마지막 원소보다 현재 원소 x가 크다면 뒤에 삽입
- 작다면 가장 왼쪽의 원소와 교체
- lowerBound()함수를 이용한다.
- 백준 실버2 '병사 배치하기'
- 이진탐색에서 생각해야 할 풀이 방법 정리
- 정렬된 배열이라면 k번째 수를 구할때 mid보다 작은 수를 카운트한다.
- mid가 k번째 수가 된다고 생각해본다.
- 백준 골드1 , 'k번째 수'
- 약수의 개수를 구할때 시간복잡도 해결방법
- 이중 for문을 사용한다면 시간복잡도로 시간초과
- 두번째 for문의 수의 범위를 Math.sqrt()함수를 써서 범위를 줄인다.
- 소수 찾기 시간초과 해결법
- 에라토스테네스의 체를 이용해서 푼다.
- 프로그래머스 level1 소수 찾기 참고.
- Javascript의 문자열이 숫자인지 체크하기 위해서는 isNaN() 함수를 사용합니다.
- [^문자] = 대괄호 안의 문자를 제외한다.
- \w = 밑줄 문자를 포함한 영, 숫자 문자를 의미한다.[A-Za-z0-9_]와 동일하다.
- \d = 숫자를 의미
- /g = 문자열 내의 모든 패턴을 검색한다.
- \특수기호 (*, ^, ? . 등) = 해당 특수기호를 의미한다.
- {Min,} = 최소 Min개 ex) [...를 .로 바꾸기 위해 {/.{2,}/g , "."}를 사용한다.]
- ^문자열 = 특정 문자열로 시작
- 문자열$ = 특정 문자열로 끝남
- sort()
- 정렬한 배열. 원 배열이 정렬됨. (복사본이 만들어지는 것이 아님!!)
- 배열 오름차순 , 내림차순에 사용
- reduce()
- 배열의 합계 및 최대값 , 최소값에 사용 할 수 있음
- reduce(a,b => { return ...}) 이라면 a는 배열의 첫번째 요소가 들어감
- 배열.includes()
- 포함하는지 체크
- 값이 포함 안되는 부분을 출력하는 문제에서 사용 할 수 있음
- 배열.reverse()
- 배열의 순서를 뒤바꿈
- 특정 부분을 역순으로 할때
- splice와 reverse를 같이 사용한다.
- forEach(a,index)
- 2차원배열에서 인덱스 구할때 쉽게 구할 수 있음
- Math.max(...arr)
- 배열안에 요소중 최대값 구할때 용이
- splice()
- 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다.
- array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
- findIndex()
- findIndex() 메서드는 테스트 기능을 충족하는 요소의 인덱스를 반환하거나 테스트를 통과한 요소가 없으면 -1을 반환합니다.
- every()
- 배열의 모든 원소를 비교할때 사용 할 수 있다.
- prevArr.every((e,i) => e === next[i]); 이런식으로 사용한다.
- JSON.stringify()를 사용해서 비교해도 가능