프로그래머스 JS LV1

LV1 05 두 정수 사이의 합, 콜라츠 추측, 서울에서 김서방 찾기

와라리요 2022. 12. 10. 22:28

두 정수 사이의 합

 문제: 두 정수 a, b 사이에 속한 모든 전수의 합을 구하면 된다.

 풀이: 수학적 규칙을 이용해 풀었다. (두 수의 합)  * (두 수의 차 + 1) / 2를 하면 a~b의 합을 구할 수 있다.

function solution(a, b) {
    return (a + b) * (Math.abs(a - b) + 1) / 2;
}

 


 

콜라츠 추측

문제: Collatz란 사람에 의해 제기된 이 추측으로 입력된 수가 짝수면  / 2, 홀수면 * 3 + 1을 반복하면 주어진 수가 1이 된다는 것이다. 여기서 1이 되기까지 몇번을 반복하는 return하라. 단, 주어진 숫자가 1이면 0을, 500번 초과 반복해야 된다면 -1을 return하라.

풀이: 먼저 조건문을 이용해 1일 경우 0을 리턴하고 for문과 삼항연산자를 이용해 짝수, 홀수 일 시 규칙 수행을 500번 반복하는데 if문을 이용해 n이 1이 되면 return i를 했다. 그리고 for문이 끝나면 return -1을 하면 끝이다.

function solution(n) {
    if (n === 1) {return 0;}
    for (let i = 1; i <= 500; i++) {
        n % 2 === 0 ? n /= 2 : n = n * 3 + 1;
        if (n === 1) {
            return i;
        }
    }
    return -1;
}

 


 

서울에서 김서방 찾기

문제: 매개변수로 벼열이 주어지는데 요소 중 "Kim"의 위치를 찾아 "김서방은 몇에 있다"를 반환하면 된다.

풀이: indexOf()를 이용해 index를 찾고 문구에 넣어 return하면 된다.

function solution(seoul) {
    const str = seoul.indexOf("Kim");
    return `김서방은 ${str}에 있다`;
}