문제 설명
문자열my_string
이 매개변수로 주어집니다.my_string
을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.
작성한 코드는 아래와 같다.
const solution = my_string => [...my_string].reverse().join('');
정말 짧은 코드이지만, 내가 평소에 쓰지 않았던 spread syntax와 method를 처음으로 사용하였기 때문에 하나씩 코드를 뜯어보자면
1. 문자열을 배열로 만들고
const solution = my_string => [...my_string]
console.log(solution('jaron')) // ["j", "a", "r", "o", "n"]
2. 그 배열을 뒤집어서
const solution = my_string => [...my_string].reverse()
console.log(solution('jaron')) // ["n", "o", "r", "a", "j"]
3. 문자열로 다시 반환한다
const solution = my_string => [...my_string].reverse().join('');
console.log(solution('jaron')) // "noraj"
이 코드를 작성할 때 join
의 매개변수를 무엇으로 두어야 하는지에 대해 굉장히 고민했다. '분명 어디서 본 메서드이긴 하는데... 분명 어떤 매개변수를 넣어야 하는데...' 하면서 이것 저것 넣어보며 console을 계속 찍어보았다.
그러다 더 정확히 알기 위해 MDN에 들어가서 join()
메서드에 대해 찾아보았고 이러한 예시를 보았다.
const elements = ['Fire', 'Air', 'Water'];
console.log(elements.join());
// expected output: "Fire,Air,Water"
console.log(elements.join(''));
// expected output: "FireAirWater"
console.log(elements.join('-'));
// expected output: "Fire-Air-Water"
join()
메서드의 매개변수인 separator
는 배열의 각 요소를 구분할 문자열을 지정하고, separator
가 빈 문자열(''
)이면 모든 요소들이 사이에 아무 문자도 없이 연결된다. 즉 내가 필요한 매개변수는 ''
이었다!
정말 간단한 한 줄의 코드였는데 알고리즘을 풀며 써본 적 없던 메서드를 사용하고, 그 메서드에 필요한 매개변수를 직접 하나씩 콘솔로 찍어보니 다른 문제를 풀 때보다 조금 더 체득이 된 것 같다.
// 다른 사람의 풀이 1
const solution = (my_string) => my_string.split('').reverse().join('')
// 다른 사람의 풀이 2
function solution(my_string) {
return Array.from(my_string).reverse().join('');
}
나는 Spread Syntax를 사용하여 배열로 만든 반면, split()
메서드, 혹은 Array.from()
메서드를 사용한 사람들도 있었다. Array.from()
메서드는 오늘 처음 접해봐서 MDN Array.from()에서 읽어보니 새로운 배열을 만들 때 유용하게 쓰일 것 같았다. 내가 필요로 할 때 쓸 수 있도록 복습하고 공부해야겠다.