문제 정의
영어 소문자 알파벳으로 구성된 문자열을 입력받아 처리하는 JavaScript 함수를 작성해야 합니다.
이 함수는 새로운 문자열을 생성해야 하는데, 규칙은 다음과 같습니다.
각 문자를 해당 문자의 1 기반(1-based) 인덱스 번호만큼 반복합니다. 즉, 첫 번째 문자는 1번, 두 번째 문자는 2번, 세 번째 문자는 3번 반복됩니다. 반복된 문자열의 첫 글자는 대문자로 변환하고, 서로 다른 문자 그룹 사이에는 대시(-)로 구분합니다.
예를 들어, 문자열 'abcd'가 주어지면 결과는 다음과 같습니다.
"A-Bb-Ccc-Dddd"
해결 코드 예제
다음은 위 문제를 해결하는 전체 코드입니다.
const str = 'abcd';
const repeatStrings = (str) => {
const res = [];
for(let i = 0; i < str.length; i++){
const el = str[i];
let temp = el.repeat(i + 1);
temp = temp[0].toUpperCase() + temp.substring(1, temp.length);
res.push(temp);
};
return res.join('-');
};
console.log(repeatStrings(str));코드 동작 원리
코드가 동작하는 과정을 단계별로 살펴보겠습니다.
1. 문자 반복: 자바스크립트 내장 메서드인 String.prototype.repeat()를 사용하여 현재 문자를 i + 1번 반복합니다. 루프 인덱스 i는 0부터 시작하므로, 여기에 1을 더해 1 기반 인덱스에 맞춥니다.
2. 대문자 변환: 반복된 문자열에서 첫 글자만 toUpperCase()로 대문자로 바꾸고, 나머지 부분은 substring()으로 그대로 붙입니다. 예를 들어 두 번째 문자 'b'는 'bb'가 된 후 'Bb'로 변환됩니다.
3. 결과 조합: 각 단계에서 만들어진 문자열을 res 배열에 저장한 뒤, 마지막에 join('-') 메서드를 사용해 대시로 연결한 최종 문자열을 반환합니다.
출력 결과
위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.
A-Bb-Ccc-Dddd