프로그래머스: 코딩 기초 트레이닝 javascript 11~30문제

 

원소들의 곱과 합

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

function solution(num_list) {
    let sum = num_list.reduce((a,c) => a+c) ** 2
    let mul = num_list.reduce((a,c) => a*c)
    return sum > mul ? 1 : 0;
}

 

 


 

길이에 따른 연산

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

function solution(num_list) {
    return num_list.length >= 11 ? num_list.reduce((a,c) => a+c) : num_list.reduce((a,c) => a*c);
}

 

 


 

문자열로 반환

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

 

풀이 1

function solution(n) {
    return n.toString();
}

 

풀이 2

function solution(n) {
    return n + "";
}

 

풀이 3

function solution(n) {
    return String(n);
}

 

 


 

문자열의 뒤의 n글자

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

function solution(my_string, n) {
    return my_string.slice(-n);
}

 

 


 

정수부분

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

function solution(flo) {
    return parseInt(flo);
}

 

 


 

 

정수찾기

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

function solution(num_list, n) {
    return num_list.indexOf(n) >= 0 ? 1 : 0;
}

 

function solution(num_list, n) {
    return num_list.includes(n) ? 1 : 0;
}

 

 


 

문자열 정수의 합

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

function solution(num_str) {
    return [...num_str].reduce((a,c) => Number(a)+Number(c));
}

 

이렇게 풀이하여도 된다.

function solution(num_str) {
    return [...num_str].reduce((a,c) => a + +c,0);
}

 

 


 

조건에 맞게 수열 변환하기 1

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

function solution(arr) {
    return arr.map(v => v >= 50 && v % 2 === 0 ? v / 2 : v < 50 && v % 2 === 1 ? v * 2 : v);
}

 

 


조건에 맞게 수열 변환하기 2

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

function solution(arr) {
    let cnt = 0

    arr = arr.filter(v => v >= 50 && v % 2 === 0 || v < 50 && v % 2 === 1);
    arr = arr.map(v => v >= 50 && v % 2 === 0 ? v / 2 : v < 50 && v % 2 === 1 ? v * 2 + 1 : v);
    
    while (arr.length > 0) {
        arr = arr.filter(v => v >= 50 && v % 2 === 0 || v < 50 && v % 2 === 1);
        arr = arr.map(v => v >= 50 && v % 2 === 0 ? v / 2 : v < 50 && v % 2 === 1 ? v * 2 + 1 : v);
        cnt++
    }
    return cnt
}

왜 이게 답인지 모르겠다...;

 

while 밖에 있는     

arr = arr.filter(v => v >= 50 && v % 2 === 0 || v < 50 && v % 2 === 1);
arr = arr.map(v => v >= 50 && v % 2 === 0 ? v / 2 : v < 50 && v % 2 === 1 ? v * 2 + 1 : v);

를 삭제하면 오답이 나온다..

왜지??

 

function solution(arr, n = 0) {
    while(!arr.every(x => (x >= 50 && x % 2 === 1) || (x < 50 && x % 2 === 0))) {
        arr = arr.map(x => {
            if (x >= 50 && x % 2 === 0) return x / 2;
            if (x < 50 && x % 2 === 1) return x * 2 + 1;
            return x;
        })
        n++;
    }
    return n;
}

프로그래머스 제일 위에 있는 정답 긁어온 것

every 함수는 처음 봐서 공부해야겠다..


 

조건에 맞게 수열 변환하기 3

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

function solution(arr, k) {
    return k % 2 === 0 ? arr.map(a => a + k) : arr.map(a => a * k);
}

 

밑에처럼 안에다가 조건을 입력해도 되었다

function solution(arr, k) {
    return arr.map(a => k % 2 === 0 ? a + k : a * k);
}

 


 

 

접두사인지 확인하기

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

function solution(my_string, is_prefix) {
    return my_string.slice(0,is_prefix.length) === is_prefix ? 1 : 0;
}

 

 

 


 

n의 배수

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

 

function solution(num, n) {
    return num % n === 0 ? 1 : 0;
}

 

 


 

주사위 게임 1

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

function solution(a, b) {
    return a % 2 === 1 && b % 2 === 1 ? a**2 + b**2 : a % 2 === 1 || b % 2 === 1 ? 2 * (a + b) : Math.abs(a-b)
}

 

 


 

공백으로 구분하기 1

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

function solution(my_string) {
    return my_string.split(" ");
}

 

 


 

부분 문자열인지 확인하기

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

function solution(my_string, target) {
    return my_string.includes(target) ? 1 : 0;
}

 


 

배열의 원소만큼 추가하기

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

function solution(arr) {
    let answer = [];
    for (let i of arr) {
        for (let j = 0; j < i; j++) {
            answer.push(i)
        }
    }
    return answer;
}

 

다른 사람 풀이들

function solution(arr) {
    return arr.reduce((list, num) => [...list, ...new Array(num).fill(num)], []);
}
function solution(arr) {
    return arr.reduce((a, c) => a.concat(Array(c).fill(c)), [])
}

concat이라는 함수는 처음 본다

 

 


 

문자 리스트를 문자열로 반환하기

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

function solution(arr) {
    return arr.join('');
}

 

 


 

rny-string

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

function solution(rny_string) {
    return rny_string.replace(/m/g, "rn");
}

 


 

n보다 커질 때까지 구하기

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

function solution(numbers, n) {
    let answer = 0;
    for (let i of numbers) {
        answer += i;
        if (answer > n) {
            break;
        }
    }
    return answer;
}

 

 

function solution(numbers, n) {
    return numbers.reduce((a,c)=>(a<=n)?a+c:a)
}

reduce로 풀어보려 하다가 포기했는데 다른 사람이 푼 것을 참고하여 다시 풀어보았다

조건문을 쓴 것까지는 같은데 내가 조건을 이상하게 설정을 했었다

 


 

부분 문자열

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

function solution(str1, str2) {
    return str2.includes(str1) ? 1 : 0;
}

비슷한 문제들이 계속 반복되어서 나오는 것 같다

 

 

comment