1. 특정 문자 제거하기
// 1번 문제
// 링크: https://school.programmers.co.kr/learn/courses/30/lessons/120826?language=javascript
function solution(my_string, letter) {
return my_string.split(letter).join('');
}
'BCBdbe'.split('B')
'BCBdbe'.split('B').join('')
// 오답 : 1개만 바꿉니다.
function solution(my_string, letter) {
return my_string.replace(letter, '');
}
'BCBdbe'.replace('B', '')
// 오답 : 정규표현식 패턴은 문자열로 만드는 것이라 별도로 생성을 해주어야 합니다.
function solution(my_string, letter) {
return my_string.replace(`/${letter}/g`, '');
}
'BCBdbe'.replace('B', '')
let letter = 'B'
'BCBdbe'.replace(`/${letter}/g`, '');
// 정답
function solution(my_string, letter) {
// new RegExp(패턴으로 사용할 문자열, 플래그)
// replace에서만 사용되는 것이 아니라 정규표현식이 들어가는 곳 모두에서 사용할 수 있습니다.
let reg = new RegExp(letter, 'g')
return my_string.replace(reg, '');
}
// new RegExp('B', 'g') 이렇게 사용하시거나 my_string.replace(/B/g, '')
2. 숨어있는 숫자의 덧셈
// 2번 문제
// 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120851
// 정답 유형1 : 숫자를 찾는다!
function solution(my_string) {
return my_string
.match(/[0-9]/g)
.reduce((a, b) => parseInt(a) + parseInt(b), 0)
}
"aAb1B2cC34oOp".match(/[0-9]/g)
"aAb1B2cC34oOp".match(/[0-9]/g).map(x => parseInt(x)).reduce((a, b) => a + b, 0)
"aAb1B2cC34oOp"
.match(/[0-9]/g)
.map(x => parseInt(x))
.reduce((a, b) => a + b, 0)
"aAb1B2cC34oOp"
.match(/[0-9]/g)
.reduce((a, b) => parseInt(a) + parseInt(b), 0)
// 정답 유형2 : 문자를 제거한다!
function solution(my_string) {
return my_string
.replace(/[^0-9]/g, '')
.split('')
.reduce((a, b) => parseInt(a) + parseInt(b), 0)
}
"aAb1B2cC34oOp"
.replace(/[^0-9]/g, '')
.split('')
.reduce((a, b) => parseInt(a) + parseInt(b), 0)
3. 369게임
// 3번 문제
// 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120891
// 오답! null일때 length가 없습니다!
function solution(order) {
return order.toString().match(/[369]/g).length;
}
(163009).toString().match(/[369]/g)
(0).toString().match(/[369]/g)
(10).toString().match(/[369]/g)
// 정답
function solution(order) {
let value = order.toString().match(/[369]/g) ?? []
return value.length;
}
function solution(order) {
return (order.toString().match(/[369]/g) ?? []).length;
}
4. 잘라서 배열로 저장하기
// 4번 문제
// 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120913
// 아래와 같이 풀 수 있지만 정규표현식을 사용하면 더 간단해집니다.
// 정답
function solution(my_str, n) {
let result = []
for (let i = 0; i < my_str.length; i += n) result.push(my_str.slice(i, i+n))
return result
}
[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]
[0-9]{1,n}
"abc1Addfggg4556b".match(/[a-zA-Z0-9]{4}/g) //잘라내기
"abc1Addfggg4556b".match(/[a-zA-Z0-9]{3}/g)
"abc1Addfggg4556b".match(/\w{3}/g) // \w 문자
"abc1Addfggg4556b".match(/\d{3}/g) // \d숫자
"abc1Addfggg4556b".match(/.{3}/g) // 모든문자
"".match(/.{3}/g) //주의 : null
// 오답
function solution(my_str, n) {
let reg = new RegExp(`.{${n}}`, 'g') //마지막 남은 것도 리턴해줘야 해서 오답
return my_str.match(reg)
}
// 정답(정규표현식 사용)
function solution(my_str, n) {
let reg = new RegExp(`.{1,${n}}`, 'g')
return my_str.match(reg)
}
5. 숨어있는 숫자의 덧셈(2)
// 5번
// https://school.programmers.co.kr/learn/courses/30/lessons/120864
// 2번 문제 업그레이드
// 2번 문제 해답
function solution(my_string) {
return my_string
.replace(/[^0-9]/g, '')
.split('')
.reduce((a, b) => parseInt(a) + parseInt(b), 0)
}
//오답
function solution(my_string) {
return my_string
.match(/\d+/g)
.reduce((a, b) => parseInt(a) + parseInt(b), 0)
}
//정답
function solution(my_string) {
return (my_string.match(/\d+/g)??[])
.reduce((a, b) => parseInt(a) + parseInt(b), 0)
}
"aAb1B2cC34oOp".match(/\d/g)
"aAb1B2cC34oOp".match(/\d+/g)
"aAb1B2c111C34oO123p".match(/\d+/g) +는 숫자가 여러개 나올 수 있다.
[ 그룹 연습문제 ]
////////////////// 그룹 연습문제 //////////////////
'gogaooogogooo'.match(/(go)/g); // ['go', 'go', 'go']
'gogaooogogooo'.match(/[go]/g); // ['g', 'o', 'g', 'o', 'o', 'o', 'g', 'o', 'g', 'o', 'o', 'o']
// 숫자 2자리와 알파벳 하나씩이 매칭되도록 다음의 패턴에서 문자열을 추출하시오.
// '87a99b00fww89e' => ['87a', '99b', '00f', '89e']
'87a99b00fww89e'.match(/[0-9][0-9][a-zA-Z]/g)
'87a99b00fww89e'.match(/([0-9][0-9])([a-zA-Z])/g) // 숫자 그룹과 문자 그룹으로 나눕니다.
'87a99b00fww89e'.match(/([0-9]{2})([a-zA-Z])/g)
'87a99b00fww89e'.match(/(\d{2})([a-zA-Z])/g)
6번 문제
// 링크 : https://jsalgo.co.kr/
'알고리즘 > 코딩테스트' 카테고리의 다른 글
| [JS] 프로그래머스 Lv.0 문자열 반복해서 출력하기 (0) | 2023.09.06 |
|---|---|
| [JS]프로그래머스 Lv.0 문자열 출력하기 (0) | 2023.09.06 |
| [JS]프로그래머스 Lv.0 a와 b 출력하기 (0) | 2023.09.06 |