Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바스크립트
- 코드스테이츠
- JavaScript Deep Dive
- 이벤트 루프
- 코딩테스트
- 유데미
- 자료구조
- 코드스테이츠 메인프로젝트
- 프론트엔드
- next/Image
- 알고리즘
- OSI 7계층
- primitive type
- Node js
- MUI
- Native select
- 페이지네이션
- react js
- input class
- 버블정렬
- 재귀함수
- nodejs
- 백준
- sort
- 백준 nodeJS
- 배열
- javascript
- 정규표현식
- kakao map api
- CSS
Archives
- Today
- Total
신입 개발자에서 시니어 개발자가 되기까지
알고리즘 - 0을 기준으로 문자를 나누는 법(feat. 정규표현식) 본문
카카오 k진수에서 소수 개수 구하기 문제에서 나온 알고리즘이다.
0을 기준으로 k진수를 나누어서 각 수가 소수가 아닌지 판별해야 한다.
0을 기준으로 숫자를 나누기 위해 처음엔 반복문으로 풀었는데 코드가 길다.
let arithmetic = n.toString(k);
let array = [];
let string = '';
for(let i =0; i<arithmetic.length ;i++){
if(arithmetic[i] !=='0'){
string +=arithmetic[i];
} else {
string !== '1' && string !==''&&array.push(Number(string))
string = '';
}
}
if(string !== '' && string !== '1'){
array.push(Number(string))
}
이런식으로 0을 만나면 저장해둔 string을 배열에 push하고, 0이 아니면 string이라는 변수에
해당 숫자를 더해주는 식으로.. 근데 또 소수를 판별해야하니까 1이나 공백이 들어가면 안 된다.
근데 다음과 같은 아주 간단한 방식이 있었다.
//n=437674, k=3
let arithmetic = n.toString(k); //211020101011
const reg = /[1-9]*/g;
arithmetic.match(reg).filter((item) => item !== ''&&item !=='1')
//[ '211', '2', '11' ]
너무 간단해서 이건 기억해둬야겠다
'javascript > 알고리즘' 카테고리의 다른 글
[백준 nodeJS] 2477 참외밭 (0) | 2022.10.30 |
---|---|
[백준 nodeJS] 4153 직각삼각형 (0) | 2022.10.27 |
[백준 nodeJS] 3009 네 번째 점 찾기 (0) | 2022.10.25 |
[백준 node JS] 24060 알고리즘 수업 - 병합정렬1 (1) | 2022.10.20 |
[백준 nodeJS] 18258 큐2 (0) | 2022.10.19 |