문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.
1 ≤ strlist 원소의 길이 ≤ 100
strlist는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다.
strlist | result |
---|---|
["We", "are", "the", "world!"] | [2, 3, 3, 6] |
["I", "Love", "Programmers."] | [1, 4, 12] |
입출력 예 #1
["We", "are", "the", "world!"]의 각 원소의 길이인 [2, 3, 3, 6]을 return합니다.
입출력 예 #2
["I", "Love", "Programmers."]의 각 원소의 길이인 [1, 4, 12]을 return합니다.
function solution(strlist) {
let note = [];
for(i=0; i<strlist.length; i++){
return note.push(strlist[i].length)
}
}
※ 참고로 틀린 답이다. 어디가 틀렸을까?
function solution(strlist) {
let note = [];
for(i=0; i<strlist.length; i++){
note.push(strlist[i].length)
}
return note
}
function solution(strlist) {
return strlist.map((el) => el.length)
}
function solution(strlist) {
return strlist.reduce((a, b) => [...a, b.length], [])
}
(1) 반복문 좀 그만쓰자! map 함수도 있다.
(2) 오답풀이
분명 반복문도 제대로 작성했는데 어디서 무엇이 틀렸는지 찾는데 시간이 많이 걸렸다.
그런데 알고보니 내가 return 해야할 값은 note
이지, note.push(strlist[i].length)
가 아니었다.
결국 push()함수에 대해서 제대로 알지 못했던 어처구니가 없는 실수였다.. ㅋㅋㅋ 그냥 대충 어떤 배열에 특정 요소를 집어넣어 배열을 반환하는 매서드라고 알고 있었는데, 그게 아니었다.
push() 함수는 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환하는 함수다. 즉, 길이를 반환할 뿐이지, 배열자체를 반환하는 함수가 아니다.
다 풀어놓고 틀리다니 🤦♂️🤦♂️🤦♂️
역시 코딩은 내가 무의식적으로 어떤 부분에서 실수를 하는지 그 경우를 인지하는 것도 중요한 공부인것 같다. 감질나고해서 이를 건너뛰려고 해서는 안된다. 특히 문제풀때 어떤 태도로 임하느냐가 정말 중요하다는 것을 다시 느낀다.
실력이 빨리 쌓여서 어디가 틀렸는지 한 눈으로 알아보는 실력까지 갖춰졌으면 좋겠다
패턴과 모양만 대충 숙지하지 말고 쓸려면 제대로 알고쓰기!!