Javascript-level : 코딩테스트 입문 - 배열 원소의 길이

HS K·2022년 12월 22일
0
post-custom-banner

문제설명

문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.

제한사항

1 ≤ strlist 원소의 길이 ≤ 100
strlist는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다.

입출력 예

strlistresult
["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
}

여러종류의 풀이 보기

1번

function solution(strlist) {
    return strlist.map((el) => el.length)
}

2번

function solution(strlist) {
    return strlist.reduce((a, b) => [...a, b.length], [])
}

후기

(1) 반복문 좀 그만쓰자! map 함수도 있다.

(2) 오답풀이

분명 반복문도 제대로 작성했는데 어디서 무엇이 틀렸는지 찾는데 시간이 많이 걸렸다.
그런데 알고보니 내가 return 해야할 값은 note이지, note.push(strlist[i].length) 가 아니었다.

결국 push()함수에 대해서 제대로 알지 못했던 어처구니가 없는 실수였다.. ㅋㅋㅋ 그냥 대충 어떤 배열에 특정 요소를 집어넣어 배열을 반환하는 매서드라고 알고 있었는데, 그게 아니었다.

push() 함수는 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환하는 함수다. 즉, 길이를 반환할 뿐이지, 배열자체를 반환하는 함수가 아니다.

다 풀어놓고 틀리다니 🤦‍♂️🤦‍♂️🤦‍♂️


역시 코딩은 내가 무의식적으로 어떤 부분에서 실수를 하는지 그 경우를 인지하는 것도 중요한 공부인것 같다. 감질나고해서 이를 건너뛰려고 해서는 안된다. 특히 문제풀때 어떤 태도로 임하느냐가 정말 중요하다는 것을 다시 느낀다.

실력이 빨리 쌓여서 어디가 틀렸는지 한 눈으로 알아보는 실력까지 갖춰졌으면 좋겠다


패턴과 모양만 대충 숙지하지 말고 쓸려면 제대로 알고쓰기!!

profile
주의사항 : 최대한 정확하게 작성하려고 하지만, 틀릴내용이 있을 수도 있으니 유의!
post-custom-banner

0개의 댓글