문제
https://school.programmers.co.kr/learn/courses/30/lessons/81301?language=javascript
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
<<구현 문제의 일종으로 일반적인 문자열처리 유형이다. 자바스크립트 정규표현식 메서드를 숙지할 필요가 있다.>>
접근방법
1. alphabet과 숫자를 1:1 매칭시킨 검색 테이블을 만들어준다.
2. 이 테이블에서 keys() 배열을 뽑아 forEach로 순회작업을 진행해주며
3. values()로 뽑은 숫자목록을 forEach문의 idx로 접근하여 문자열 replace를 진행해준다.
문자열 변수를 이용해야 하므로
JAVASCRIPT
const re = /ab+c/i; // literal notation
와 같은 literal notation 형태의 정규표현식 객체를 생성하는 것이 아니라 ,
JAVASCRIPT
const re = new RegExp("ab+c", "i"); // constructor with string pattern as first argument
형태로 생성자 함수를 활용해 정규표현식 객체를 생성해주자.
4. String.replace( oldPattern , newPattern ) 형태의 사용법을 기억하자, oldP에는 문자열 뿐만 아니라 RegExp객체도 가능하다.
5. 대체된 문자열을 반환
코드
JAVASCRIPT
function solution(s) {
let answer = s;
const numObj = {
'zero' : 0,
'one' : 1,
'two' : 2,
'three' : 3,
'four' : 4,
'five' : 5,
'six' : 6,
'seven' : 7,
'eight' : 8,
'nine' : 9,
}
const alphabets = Object.keys(numObj)
const numbers = Object.values(numObj)
alphabets.forEach((alphabet,idx)=>{
// new RegExp('str','flag') 는 /regex/ 정규표현식 객체를 생성해주는 생성자함수이다.
// str, flag변수 자리에 문자열 `변수`를 넣어서 사용해줄 수 있음!
// 일반 const re = /ab=c123/gi; 형태로 정규표현식 객체를 만든다면 변수형태로 집어넣을 수 없기 때문
const regex = new RegExp(alphabet,'gi') //g옵션이 없다면 순회 횟수 만큼의 단어만 교체하므로 에러
// string.replace(regex객체,대체문자열) // string.replace(oldP,newP)와 같음
// oldP에는 직접 문자열을 넣거나, regex패턴을 넣어줄 수 있음.!
answer = answer.replace(regex,numbers[idx])
})
return Number(answer);
}
'Algorithm > KAKAO' 카테고리의 다른 글
2022카카오인턴십: [Dijkstra] 등산코스 정하기[lv3] (1) | 2023.11.23 |
---|---|
2022 카카오인턴십:[Two pointer] 두 큐의 합 같게만들기 (1) | 2023.11.22 |
2022 카카오인턴십:[Implementation] 성격 유형 검사 (0) | 2023.11.22 |
문제
https://school.programmers.co.kr/learn/courses/30/lessons/81301?language=javascript
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
<<구현 문제의 일종으로 일반적인 문자열처리 유형이다. 자바스크립트 정규표현식 메서드를 숙지할 필요가 있다.>>
접근방법
1. alphabet과 숫자를 1:1 매칭시킨 검색 테이블을 만들어준다.
2. 이 테이블에서 keys() 배열을 뽑아 forEach로 순회작업을 진행해주며
3. values()로 뽑은 숫자목록을 forEach문의 idx로 접근하여 문자열 replace를 진행해준다.
문자열 변수를 이용해야 하므로
JAVASCRIPT
const re = /ab+c/i; // literal notation
와 같은 literal notation 형태의 정규표현식 객체를 생성하는 것이 아니라 ,
JAVASCRIPT
const re = new RegExp("ab+c", "i"); // constructor with string pattern as first argument
형태로 생성자 함수를 활용해 정규표현식 객체를 생성해주자.
4. String.replace( oldPattern , newPattern ) 형태의 사용법을 기억하자, oldP에는 문자열 뿐만 아니라 RegExp객체도 가능하다.
5. 대체된 문자열을 반환
코드
JAVASCRIPT
function solution(s) {
let answer = s;
const numObj = {
'zero' : 0,
'one' : 1,
'two' : 2,
'three' : 3,
'four' : 4,
'five' : 5,
'six' : 6,
'seven' : 7,
'eight' : 8,
'nine' : 9,
}
const alphabets = Object.keys(numObj)
const numbers = Object.values(numObj)
alphabets.forEach((alphabet,idx)=>{
// new RegExp('str','flag') 는 /regex/ 정규표현식 객체를 생성해주는 생성자함수이다.
// str, flag변수 자리에 문자열 `변수`를 넣어서 사용해줄 수 있음!
// 일반 const re = /ab=c123/gi; 형태로 정규표현식 객체를 만든다면 변수형태로 집어넣을 수 없기 때문
const regex = new RegExp(alphabet,'gi') //g옵션이 없다면 순회 횟수 만큼의 단어만 교체하므로 에러
// string.replace(regex객체,대체문자열) // string.replace(oldP,newP)와 같음
// oldP에는 직접 문자열을 넣거나, regex패턴을 넣어줄 수 있음.!
answer = answer.replace(regex,numbers[idx])
})
return Number(answer);
}
'Algorithm > KAKAO' 카테고리의 다른 글
2022카카오인턴십: [Dijkstra] 등산코스 정하기[lv3] (1) | 2023.11.23 |
---|---|
2022 카카오인턴십:[Two pointer] 두 큐의 합 같게만들기 (1) | 2023.11.22 |
2022 카카오인턴십:[Implementation] 성격 유형 검사 (0) | 2023.11.22 |