문제 설명
문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다. my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
✅ 내 코드
function solution(my_string, index_list) {
const newList =[]
index_list.map(a => newList.push(my_string[a]))
return newList.join("")
}
🙋♀️ 내 생각
배열의 각각의 값들을 인덱스로 이용해야 하기 때문에 문제를 보자마자 바로 map()을 떠올렸다.
그래서 map()을 통해 배열을 돌면서 그 값들을 인덱스로 받아오는 작업을 해야겠다고 생각했다.
index_list.map()을 통해서 배열을 돌고, 또 그 배열의 값을 인덱스로 이용하기 위해서 my_string[a]와 같이 만들어주었다.
index_list.map(a => my_string[a])와 같이 만들면 결과값으로 내가 원하는 값들이 각각 떨어져있는? 값들이 나온다.
이런 식으로 말이다.
사실 바로 이런식으로 만들어도 위와같은 결과 값이 나오는데 나는 그걸 push()을 통해서 새로운 배열에 추가하는 방법으로 만들었는데, 굳이 그렇게 한번 더 push()할 필요가 없다는걸 문제를 다 풀고나서 알게 되었다.
function solution(my_string, index_list) {
return index_list.map(a => my_string[a])
}
map()은 어차피 원본의 배열을 훼손하지않고 새로운 배열을 반환하기 때문에 굳이 새로운 list를 만들어줄 필요가 없다.
그래서 위에 내가 풀었던 방법보다는 이렇게 push()을 하지 않고 바로 map을 돈 다음, join("")을 이용해서 값들을 연결하고, 문자열로 바꿔주는 방법이 더 간결하다.
function solution(my_string, index_list) {
return index_list.map(a => my_string[a]).join("")
}
💻 내가 사용한 메서드
1. map(): 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환
Array.map()
➡️ map은 새로운 배열을 반환하기 때문에 굳이 따로 list를 만들어서 추가할 필요가 없었다.
2. join(): 배열의 모든 요소를 연결해 하나의 문자열로 만든다.
Array.join()
⭐️⭐️ 1. join()은 결과값을 문자열로 만든다!!!
⭐️⭐️ 2. join()의 인자로는 seperator가 들어가지만
join(""): 하나의 문자열
join(): ,로 구분되어진 문자열
이 2가지는 내 예상과 다른결과이므로 기억해둘것
💻 학습한것
map이 새로운 배열을 반환한다는 사실을 이미 알고 있었음에도 문제를 풀면서는 새로운 list에 push로 추가를 하는 방법만 생각이 났었다.
다음번에는 유사한 코드를 짤때는 이 사실을 잊지말고 새로운 배열을 만들지말고 바로 다음으로 처리할 값을 넣을것 ..!! 😉
'JavaScript > 알고리즘' 카테고리의 다른 글
프로그래머스 숫자 문자열과 영단어 JS ( replace() ) - [2021 카카오 채용연계형 인턴십] (0) | 2023.05.29 |
---|---|
프로그래머스 문자열 정수의 합 JS ( map(), reduce() ) (0) | 2023.05.29 |
프로그래머스 공백으로 구분하기1 JS ( split() ) (0) | 2023.05.29 |
프로그래머스 부분 문자열 JS ( includes() ) (0) | 2023.05.29 |
프로그래머스 마지막 두원소 JS ( if문 / reverse(), const ) (0) | 2023.05.29 |