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
- Robo3T 폰트 키우기
- 깃 토큰 만료
- ubuntu타임존
- 리엑트블로거
- sql like연산자
- 프론트엔드 스쿨
- 코딩 어?
- 배열을 객체로
- 우분투 시간 변경
- 5.3.8 Modifying Queries
- @Moditying @Query
- js 문자열을 문자배열로
- sql 문자열 패턴 검색
- 객체의 밸류값만 찾기
- Robo3T 폰트변경
- search()
- Robo3T 글씨체 변경
- 시퀄 문법
- findIndex()
- 가상컴퓨터마법사
- lastIndexOf()
- Robo3T 글씨키우기
- ...점점점문법
- 스프링 데이타 JPA
- 레디스 확인
- ${변수}
- indexOf()
- 객체를 배열로
- 문자열 인터폴레이션
- 객체의키값만 찾기
Archives
- Today
- Total
코딩기록
replace) 모음제거 / 문자열에서 특정 문자(2개이상) 제거 - for, forEach(배열), for...of(문자열), reduce, 정규표현식+replace(변수명, ' '), includes 본문
프론트/JS)코딩테스트
replace) 모음제거 / 문자열에서 특정 문자(2개이상) 제거 - for, forEach(배열), for...of(문자열), reduce, 정규표현식+replace(변수명, ' '), includes
뽀짝코딩 2024. 9. 25. 21:25728x90
문제 설명
영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 str이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
- str은 소문자와 공백으로 이루어져 있습니다.
- 1 ≤ str의 길이 ≤ 1,000
입출력 예
str result
"bus" | "bs" |
"nice to meet you" | "nc t mt y" |
입출력 예 설명
입출력 예 #1
- "bus"에서 모음 u를 제거한 "bs"를 return합니다.
입출력 예 #1
- "nice to meet you"에서 모음 i, o, e, u를 모두 제거한 "nc t mt y"를 return합니다.
const solution = str => {
// do something
};
console.log(solution('bus')); // 'bs'
console.log(solution('nice to meet you')); // 'nc t mt y'
풀이
1번 풀이 for문
먼저 aeiou 모음 문자열 식별자를 만든다.
그리고 포문을 돌면서 식별자에 str인덱스가 includes되어있는지 확인하고
있으면 src라는 빈문자열에 하나씩 더한다.
// 1번 풀이 for
const solution1 = str => {
const target = 'aeiou';
let src = '';
for (let i = 0; i < str.length; i++) {
if (!target.includes(str[i])) src += str[i];
// !target.includes(str[i]) ? src += str[i] : null
};
return src;
};
console.log(solution1('bus')); // 'bs'
console.log(solution1('nice to meet you')); // 'nc t mt y'
2번 풀이 forEach
forEach는 배열을 순회한다. 문자열을 순회하는 for...of와 헷갈리지 않게 주의❗❗
배열을 순회하고 str 요소c를 target이 includes했는지 if 조건문으로 보고 참일때
src빈 문자열에 요소c를 하나씩 더한다.
// 2번 풀이 forEach
const solution2 = str => {
const target = 'aeiou';
let src = '';
[...str].forEach(c => {
if (!target.includes(c)) src += c;
});
return src;
};
console.log(solution2('bus')); // 'bs'
console.log(solution2('nice to meet you')); // 'nc t mt y'
3번 풀이 for...of
for...of로 순회할때도 forEach처럼 요소(값)를 쓴다. for는 [인덱스]를 사용하는 것과 차이가 있다.
코드의 내용은 위 for, forEach와 동일하다
// 3번 풀이 for...of
const solution3 = str => {
const vowels = 'aeiou';
let result = '';
for (const c of str) {
if (!vowels.includes(c)) result += c;
}
return result;
};
console.log(solution3('bus')); // 'bs'
console.log(solution3('nice to meet you')); // 'nc t mt y'
4번 풀이 정규표현식 .replace(변수명, ' ');
정규표현식과 replace를 사용했다.
- repExp로 식별자를 만들고
- / : 시작
- /g : 전역으로 검색
- [aeiou] : 제거해야할 모음
- // 두 코드의 결과는 동일.
const re = /\w+\s/g;
// 생성자를 이용함.
const re = new RegExp("\\w+\\s", "g");
replace를 이용해 첫번째 인자에 제거할 정규식을 적고, 두번째 인자에 대체할 값을 적는다.
여기선 빈 문자열' '을 적었다.
// 4번 풀이 정규표현식-replace(변수명, '');
const solution4 = str => {
const regExp = /[aeiou]/g;
return str.replace(regExp, '');
};
console.log(solution4('bus')); // 'bs'
console.log(solution4('nice to meet you')); // 'nc t mt y'
5번 풀이 reduce
모음을 제외한 문자 누적.
reduce는 너무 헤매서 쳇지피티의 도움을 받았다. 코드 흐름은 나중에 필요할때 참고해야지.
// 5번 풀이 reduce -모음을 제외한 문자 누적.
const solution5 = str => {
const vowels = 'aeiou';
return [...str].reduce((acc, cur) => vowels.includes(cur) ? acc : acc + cur, '');
};
console.log(solution5('bus')); // 'bs'
console.log(solution5('nice to meet you')); // 'nc t mt y'
- vowels.includes(cur)로 현재 문자(cur)가 모음인지 확인합니다.
- 모음일 경우: 누적된 값 acc는 그대로 반환되어 갱신되지 않습니다. 즉, 모음은 누적값에 더하지 않고 건너뜁니다.
- 모음이 아닐 경우: acc + cur로 현재 문자를 누적값에 더합니다. 이때 누적된 문자열에 자음이 추가됩니다.
예시 흐름:
- str = 'bus'의 경우:
- 첫 번째 문자 b: 모음이 아니므로 acc + 'b' → acc = 'b'
- 두 번째 문자 u: 모음이므로 acc는 그대로 → acc = 'b'
- 세 번째 문자 s: 모음이 아니므로 acc + 's' → acc = 'bs' 최종 결과는 'bs'.
- str = 'nice to meet you'의 경우:
- 첫 번째 문자 n: 자음이므로 acc + 'n' → acc = 'n'
- 두 번째 문자 i: 모음이므로 acc 그대로 → acc = 'n'
- 세 번째 문자 c: 자음이므로 acc + 'c' → acc = 'nc'
- 네 번째 문자 e: 모음이므로 acc 그대로 → acc = 'nc'
- 다섯 번째 문자 ' ': 공백이므로 acc + ' ' → acc = 'nc ' ... 최종적으로 'nc t mt y'가 반환됩니다.
reduce()의 두 번째 인자 (초기값)
- reduce()의 두 번째 인자로 빈 문자열 ''을 전달했습니다.
- 이 초기값은 누적값 acc의 초기 상태를 의미합니다. 즉, 처음에는 빈 문자열에서 시작하고, 자음이나 공백을 만나면 그때그때 문자를 더해 나갑니다.
요약:
- 문자열을 배열로 변환합니다.
- 배열의 각 문자를 순회하면서 모음은 건너뛰고, 자음이나 공백을 누적합니다.
- 누적된 문자열을 반환하여 최종 결과로 반환합니다.
6번 풀이 filter
// 6번 풀이 filter
const solution6 = str => {
const vowels = 'aeiou';
return [...str].filter((c) => !vowels.includes(c)).join('');
};
console.log(solution6('bus')); // 'bs'
console.log(solution6('nice to meet you')); // 'nc t mt y'
참고
나, 쳇지피티
반응형
'프론트 > JS)코딩테스트' 카테고리의 다른 글
Comments