안녕하세요
우테코 프리코스 1주차 - 문제 2 본문
https://github.com/youngentry/javascript-onboarding/blob/main/docs/PROBLEM2.md
🚀 기능 요구 사항
암호문을 좋아하는 괴짜 개발자 브라운이 이번에는 중복 문자를 이용한 새로운 암호를 만들었다. 예를 들어 "browoanoommnaon"이라는 암호문은 다음과 같은 순서로 해독할 수 있다.
- "browoanoommnaon"
- "browoannaon"
- "browoaaon"
- "browoon"
- "brown"
임의의 문자열 cryptogram이 매개변수로 주어질 때, 연속하는 중복 문자들을 삭제한 결과를 return 하도록 solution 메서드를 완성하라.
제한사항
- cryptogram은 길이가 1 이상 1000 이하인 문자열이다.
- cryptogram은 알파벳 소문자로만 이루어져 있다.
실행 결과 예시
cryptogramresult
"browoanoommnaon" | "brown" |
"zyelleyz" | "" |
아쉬운 점
- 정규식을 이용하여 구현을 할 때는 편하지만, 해당 정규식을 기억하지 못하면 자신의 실력으로 남지 않을 것 같습니다.
// 1. a[i] == a[i+1] 인 문자열 찾기
// 2. 일치하는 문자열을 제외하기
// 3-1. 제외한 문자열로 일치하는 문자열이 없을 때까지 다시 시행하기
// 3-2. 정규식을 사용해 연속된 문자가 true인 조건일 때만 시행하기
// const reg = /(.)\1+/; 정규식으로 2개 이상 연속된 문자열 찾기 boolean
// 4. 결과를 반환하기
function problem2(cryptogram) {
// splice 함수를 이용해 일치하는 문자열을 제외할 것입니다. 따라서 split함수로 문자열을 배열로 만듭니다.
let resolvedWord = cryptogram.split("");
// 1. 연속되는 문자열을 탐색합니다.
const findRepetition = (word) => {
for (i = 0; i < word.length; i++) {
// 2. 연속되는 문자열을 발견하면,
if (word[i] == word[i + 1]) {
// 2. 해당 문자열과 그 다음 문자열을 배열에서 splice 함수로 제외합니다.
resolvedWord.splice(i, 2);
break;
}
}
};
// 3-2. 정규식으로 2개가 연속된 문자열 찾기 return boolean
const reg = /(.)\1+/;
// 3-1. 반복문은 "2개가 연속된 문자열이 존재"하면 계속 실행됩니다.
while (reg.test(resolvedWord.join(""))) {
// 3-1. 연속되는 문자열을 제외하는 함수를 실행합니다.
findRepetition(resolvedWord);
}
// 배열을 문자열로 합친 결과를 반환합니다.
return resolvedWord.join("");
}
problem2("browoanoommnaon");
'우테코 프리코스 > 1주차' 카테고리의 다른 글
우테코 프리코스 1주차 - 문제 6 (리팩토링O) (0) | 2022.11.01 |
---|---|
우테코 프리코스 1주차 - 문제 5 (리팩토링O) (0) | 2022.10.29 |
우테코 프리코스 1주차 - 문제 4 (리팩토링O) (0) | 2022.10.29 |
우테코 프리코스 1주차 - 문제 3 (0) | 2022.10.29 |
우테코 프리코스 1주차 - 문제 1 (0) | 2022.10.27 |