문제풀이 - 가장 큰 수 찾기, 문자열 정렬하기(1)

준성·2023년 10월 20일
0
post-thumbnail

문제를 풀어보면서 느낀점을 얘기해보자! 🔥

프로그래머스 문제 중 좀 어렵다고 느꼈던 문제를 택해서 블로그를 포스트 해보려한다.

1. 가장 큰 수 찾기

문제의 내용

문제를 보면 Array값 안에 가장 큰 수를 찾고 그 수의 인덱스 값도 같이 출력하게 끔 코드를 작성하면 되겠다.

나의 코드

function solution(array) {
    let result = []
    let max = Math.max.apply(null, array)
    let idx = 0;
    for(let i = 0; i < array.length; i++){
        if(max === array[i]){
            idx = i
        }
    }
    result = [max, idx]
    return result;
}

Math.max 매서드를 이용해서 가장 큰수를 먼저 찾았다.
max 라는 변수에 가장 큰 수를 담고 idx라는 변수는 인덱스를 저장하기 위한 변수로 저장했다. for문을 이용하여 array 매개변수안에 담겨 있는 숫자와 max라는 변수가 같을때 idx변수에는 반복문의 i값을 저장하여 result라는 변수에 두개의 결과를 담아 반환하였다.
코드를 작성하고나서 뭔가 조금 더 쉽게 코드를 작성할 수 있었다고 생각했다.

다른 사람의 풀이

function solution(array) {
    let max = Math.max(...array);
    return [max, array.indexOf(max)];
}

indexOf 매서드를 사용해서 인덱스를 찾는법을 생각하지 못했다.
간결하게 적을 수 있었다는 생각을 다시금 느껴 다음에 index값을 찾을때는 적용해야 겠다고 생각했다.

2. 문자열 정렬하기(1)

문제의 내용


숫자와 문자를 혼합해서 적혀있는 문자형 타입을 숫자만 추출후 오름차순으로 정렬하라는 내용의 문제였다.

나의 코드

function solution(my_string) {
        return [...my_string].map((el) => parseInt(el, 10)).filter((el) => el === el || 0).sort((a,b) => a - b)
}

스프레드 문법을 이용해 String 타입의 매개변수를 각각의 배열의 값으로 쪼개준뒤
map의 매서드로 이용해 모든 배열에 숫자형타입으로 변환시켰다. 그렇게 되면
문자들은 숫자가 될 수 없기에 NaN값으로 출력된다. 이 것을 filter를 사용하여 거짓의 값만 따로 filter될 수 있게끔 할 수 있다.

filter(el => el)

거짓으로 불리는 값 fasly값들을 필터링하고 남은 값들을 출력시킬 수 있는데 이때
0도 fasly값으로 적용되어 0은 따로 조건을 걸어 출력되게 할 수 있어야한다.

filter((el) => el === el || 0)

그러고 나서 sort를 사용하여 오름차순으로 배열을 조정하면 문제풀이는 완성된다.

다른 사람의 풀이

function solution(my_string) {
    return my_string.match(/\d/g).sort((a, b) => a - b).map(n => Number(n));
}

정규식 표현을 이용해 문제를 풀었다 정규식 표현의 대해서는 애매하게 알아서
조금 더 공부를 해보고 나서 사용해봐야 겠다고 생각했다..

profile
코드를 그리다.

0개의 댓글