[프로그래머스] 문자열 정렬하기 (1), 숨어있는 숫자의 덧셈 (1), 소인수분해

blockzzie·2023년 4월 19일
0

프로그래머스

목록 보기
42/52

🌱문자열 정렬하기 (1)

입출력 예

my_string result
"hi12392" [1, 2, 2, 3, 9]
"p2o4i8gj2" [2, 2, 4, 8]
"abcde0" [0]

나의 답

function solution(my_string) {
    var answer = [];  
    var arrStr = [...my_string.replace(/[a-z]/g,'')]
    return arrStr.map(a=>Number(a)).sort((a,b) => a-b)
}

--> string을 replace 해준 뒤 전개연산자로 넣었다. 배열이 되었으니 map을 사용해 내부 string을 numberb로 바꾸어주고 내림차순 정렬함.

🌱숨어있는 숫자의 덧셈 (1)

입출력 예

my_string result
"aAb1B2cC34oOp" 10
"1a2b3c4d123" 16

나의 답

function solution(my_string) { 
    var answer = 0;
    var arr= my_string.match(/[0-9]/g)
    for(i=0; i<arr.length; i++){
        answer += Number(arr[i])
    } 
    return answer     
}

--> string 안에 정규표현한 0-9와 같은 값만 arr에 넣고 다시 arr 내부 값 하나하나를 number로 형 변환한 뒤 더해주었다.

🌱소인수분해

입출력 예

n result
12 [2, 3]
17 [17]
420 [2, 3, 5, 7]

남의 답

function solution(n) {
    var list = [];

    function isPrime(n){
        if (n == 2)
            return true;

        for (let i = 2; i < n; i++){
            if (n%i == 0){
                return false;
            }
        }
        return true;
    }

    for (let i = 2; i <= n; i++){
        if ((isPrime(i))&&(n%i == 0)){
            list.push(i);
            n = n/i;
        }
    }

    return list;
}

--> 해당 수보다 작은 소수를 구하는 것인데 문제 자체는 어렵지 않으나 어떻게 풀어갈지 계속 헤맸다. 결국 남의 답을 봤지만 소수를 구하는 함수를 이해하기. 더 짧은 답들도 있지만 위 답이 가장 순서대로 풀어쓴 느낌이다

소수가 맞니?

   function isPrime(n){
        if (n == 2)
            return true;

        for (let i = 2; i < n; i++){
            if (n%i == 0){
                return false;
            }
        }
        return true;
    }
profile
막무가내 코딩노트

0개의 댓글