프로그래머스 0단계

박재훈·2023년 1월 27일
0

알고리즘

목록 보기
4/13

소인수분해

function solution(n) {
    var answer = [];
    for(let i = 2; i <= n; i++) {
        
        if(n % i == 0) {
            while(n % i == 0) {
                n = n/i
            } 
        answer.push(i);
    }
        
    }
    return answer;
}

문자열 계산하기

function solution(my_string) {
    let str = my_string.split(" ");
    let sum = Number(str[0]);
    
    for(let i = 1; i < str.length; i = i + 2) {
        let tmp = Number(str[i+1]);
        if (str[i] == "+") sum += (tmp)
        else sum -= (tmp);
    }
    return sum
}

영어가 싫어요

다른 사람의 풀이 : zero부터 nine 까지 객체나 배열에 담아두고 문장 전체를 돌며 해당되는 값이 있으면 split이나 replace로 바꾸는 식이었다.

풀이1)
function solution(numbers) {
    const obj = {
        zero: 0, one: 1, two: 2, three: 3, four: 4,
        five: 5, six: 6, seven: 7, eight: 8, nine: 9
    };

    const num = numbers.replace(/zero|one|two|three|four|five|six|seven|eight|nine/g, (v) => {
        return obj[v];
    });

    return Number(num);
}

풀이2)
function solution(numbers) {
    const number = ["zero","one","two","three", "four", "five", "six", "seven", "eight", "nine"]
    for(let i = 0 ; i<number.length; i++){
        numbers = numbers.split(number[i]).join(i)
    }
    return +numbers
}

나는 완전 하드코딩을 했다...ㅎ

function solution(numbers) {
    var answer = "";
    let arr = numbers.split("")
    console.log(arr)
    for(let i = 0; i < arr.length; i++) {
        if(arr[i] === 'o') {
            answer += 1;
            i += 2;
        }
        else if(arr[i] === 't') {
            if(arr[i+1] === "w") {
                answer += 2;
                i += 2;
            } else {
                answer += 3;
                i += 4;
            }
        }
        else if(arr[i] === 'f') {
            if(arr[i+1] === "o") {
                answer += 4;
            } else {
                answer += 5;
            }
            i += 3;
        }
        else if(arr[i] === 's') {
            if(arr[i+1] === "i") {
                answer += 6;
                i += 2;
            } else {
                answer += 7;
                i += 4;
            }
        }
        else if(arr[i] === 'e') {
                answer += 8;
                i += 4;
        }
        else if(arr[i] === 'n') {
                answer += 9;
                i += 3;
        }
        else {
                answer += 0;
                i += 3;
        }
    }
    return Number(answer);
	}
profile
신입 개발자

0개의 댓글