-
#AIL_23.11.07 // Programmers_문자 반복 출력하기AIL( Algorithm I Learned) 2023. 11. 7. 22:35
## AIL_문자 반복 출력하기
***문제 설명
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.
***제한사항
2 ≤ my_string 길이 ≤ 5
2 ≤ n ≤ 10
"my_string"은 영어 대소문자로 이루어져 있습니다.
***입출력 예
my_string n result "hello" 3 "hhheeellllllooo"
***입출력 예 설명
입출력 예 #1
"hello"의 각 문자를 세 번씩 반복한 "hhheeellllllooo"를 return 합니다.
## solution.JavaScript
1. 문제의 접근 방식
주어진 문제는 문자열 `my_string`과 정수 `n`이 주어지고, `my_string`의 각 문자를 `n`번씩 반복한 문자열을 반환하는 문제입니다. 주어진 제한사항에 따라 문자열과 `n`값이 주어진다고 가정할 수 있습니다.
1) 빈 문자열 `answer`를 초기화합니다. 이 변수는 최종 결과를 저장할 문자열입니다.
2) 주어진 문자열 `my_string`을 순회하면서 각 문자를 `n`번씩 반복하고 이 결과를 `answer`에 추가합니다.
3) 문자열을 순회하면서 각 문자를 `repeat` 메서드를 사용하여 `n`번 반복한 문자열을 생성하고 이를 `answer`에 추가합니다.
4) 반복문이 종료되면 `answer`에는 원하는 결과가 저장되어 반환됩니다.
2. 문제풀이
function solution(my_string, n) { var answer = ''; for (let i=0; i<my_string.length; i++) { answer += my_string[i].repeat(n); } return answer; } /* 테스트 1 입력값 〉 "hello", 3 기댓값 〉 "hhheeellllllooo" */
3. 다른사람의 문제풀이 및 접근방식 분석
function solution(my_string, n) { var answer = [...my_string].map(v => v.repeat(n)).join(""); console.log(answer); return answer; } /* 테스트 1 입력값 〉 "hello", 3 기댓값 〉 "hhheeellllllooo" */
***문자 반복 구조분해 할당방법
1) `my_string`을 문자 배열로 분해합니다. 이렇게 하면 각 문자가 배열의 요소로 들어갑니다. 예를 들어, "hello" 문자열이 입력으로 주어지면 `["h", "e", "l", "l", "0"]로 분해됩니다.
2) 배열 메서드 `map`을 사용하여 각 문자를 `n`번 반복하는 문자열로 변환합니다. `map` 함수는 각 요소에 대해 지정된 함수를 적용하고 그 결과를 새로운 배열에 저장합니다. 따라서 각 문자는 `repeat` 메서드를 사용하여 `n`번 반복됩니다.
3) `join` 메서드를 사용하여 배열의 모든 요소를 하나의 문자열로 결합합니다. 디폴트로 요소 사이에는 아무 문자도 추가되지 않고 연결됩니다. 따라서 결과 문자열은 각 문자를 `n`번 반복한 것입니다.
4) 마지막으로, `console.log(answer)`를 통해 결과 문자열을 출력하고 결과 문자열을 반환합니다.
위에 코드는 제가 작성한 코드보다 더 간결하게 작성되었으며, 배열의 메소드와 문자열 메서드를 사용하여 문제를 해결합니다. 코드의 핵심은 각 문자를 `n`번 반복하고 그 결과를 합치는 것입니다.
# +++구조 분해 할당방법이란?
구조 분해 할당은 배열 또는 객체에서 값을 추출하여 변수에 할당하는 JavaScript의 기능입니다. 코드에서 `my_string` 문자열을 배열로 분해하는 부분을 잠시 살펴보겠습니다.
var answer = [...my_string]
`[...my_string]` 표현은 `my_string` 문자열을 문자 배열로 분해합니다. `...` 연산자는 배열 또는 문자열을 개별 요소로 분해합니다. 따라서 "hello" 문자열은 `["h", "e", "l", "l", "o"]로 분해됩니다. 그 다음 이 배열은 `answer` 변수에 할당됩니다.
이렇게 구조 분해 할당을 사용하면 문자열의 각 문자를 배열 요소로 쉽게 추출할 수 있습니다.
# +++`repeat` 메서드
`repeat` 메서드는 문자열을 주어진 횟수만큼 반복하여 새로운 문자열을 생성합니다. 이 메서드는 문자열 객체의 메서드로 사용됩니다.
var originalString = "hello"; var repeatedString = originalString.repeat(3); // "hellohellohello"
위의 코드에서 `repeat(3)`은 문자열 "hello"를 3번 반복하여 "hello hello hello "를 반환합니다.
# +++`join` 메서드
`join` 메서드는 배열의 모든 요소를 하나의 문자열로 결합하는데 사용됩니다. 이 메서드는 배열 객체의 메서드로 사용됩니다.
var array = ["h", "e", "l", "l", "o"]; var concatenatedString = array.join(""); // "hello"
`join` 메서드는 매개변수로 구분자를 받을 수 있는데, 기본값은 빈 문자열 `""`입니다. 디폴트로 요소 사이에 아무 구분자도 추가되지 않고 연결됩니다. 위의 예에서는 모든 배열 요소를 빈 문자열을 사용하여 연결하였고 "hello"란 문자열을 반환합니다.
따라서, 주어진 코드에서 `map` 메서드를 사용하여 문자열을 `repeat`메서드를 통해 `n`번 반복한 후, `join` 메서드를 사용하여 각 문자열을 연결하여 하나의 문자열로 만듭니다.
#구조 분해 할당방법/`repeat` 메서드/`join` 메서드 앞으로 자주볼 예정이니 잘 기억하자!
'AIL( Algorithm I Learned)' 카테고리의 다른 글
#AIL_23.11.10 // Programmers_자연수 뒤집어 배열로 만들기 (0) 2023.11.10 #AIL_23.11.09 // Programmers_중앙값 구하기 (3) 2023.11.09 #AIL_23.11.03 // Programmers_양꼬치 (1) 2023.11.03 #AIL_23.11.03 // Programmers_배열의 평균 값 (1) 2023.11.03 #AIL_23.11.02 // Programmers_몫 구하기 (0) 2023.11.02