TIL

7월 5일 TIL - 배열 안 문자을 숫자로 변경하기 (map(Number))

양죠니 2023. 7. 5. 20:28

https://school.programmers.co.kr/learn/courses/30/lessons/12932

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

드디어 프로그래머스 다시 푸는 나 .. 

 

입력받은 문자열을 뒤집어서 배열형태로 바꿔서 출력하면 된다.

12345 => [5, 4, 3, 2, 1] 이런식으로!

 

입력받은 문자열을 10으로 나눈 나머지를 새로운 빈 배열 arr에 하나씩 담아서 리턴하면 되겠다고 생각함

function solution(n) {
    let arr = [];
    for(let i = 0; n / 10 > 0; i++ ){
        arr.push(Math.floor(n % 10)) 
        n = n / 10
    }
    return arr;
}

 

2. 입력받은 문자열이 n으로 들어오면, 빈 배열 arr (문자열을 뒤집어서 하나하나 담아줄 배열)을 만들어준다

3. 문자열을 10으로 나눈 몫이 0보다 클떄까지 for문을 돌도록 해주고

3. n을 10으로 나눈 나머지 값을 math.floor 메소드를 통해 소수점을 버리고 arr 배열에 넣어준다

4. n값을 10으로 나눠줘서 값을 새로 갱신해준다

 

이렇게 로직을 짰는데 

리턴한 arr 배열이 완전 이상함 ..

 

그래서 접근방법을 바꿈

 

function solution(n) {
    const arr = (n+"").split("").reverse()
   return arr
}

입력받은 숫자를 spIit 메소드를 사용해서 하나씩 분리해 배열에 넣고 reverse 메소드를 사용해서 뒤집어준다

split 메소드를 쓰려고 숫자를 스트링으로 바꾸어줬는데 (n+"" 통해서) 문제에서는 배열 안에 숫자로 구성되어 있어서 또 틀림

 

그래서 구글링을 해보니 문자열을 숫자로 변경해주는 방법이 .map(Number) 해주면 된다구 한다

function solution(n) {
    const arr = (n+"").split("").map(Number).reverse()
   return arr
}

해결 완!