개발일지

개발일지 6일차

index.ys 2023. 3. 11. 23:19

프로그래머스 알고리즘 테스트

- 프로그래머스 알고리즘 0단계 문제를 풀이했다.

두수의 차

solution.js

function solution(num1, num2) {
    var answer = 0;
    return answer;
}

num1과 num2를 뺀값을 리턴하는 식을 짜야한다.

다른 풀이1

function solution(num1, num2) {
    return parseInt(num1 - num2)
}

다른 풀이2

const solution = (num1, num2) => num1 - num2

다른 풀이3

function solution(num1, num2) {
    var answer = num1 - num2;
    return answer;
}

숫자비교하기

solution.js

function solution(num1, num2) {
    var answer = 0;
    return answer;
}

num1과 num2 가 같을때 1을 출력하고 num1과 num2의 값이 다를때 -1을 출력한다.

나의 풀이

function solution(num1, num2) {

 if(num1 === num2) {
    return 1
 }
    return -1 
}

다른 풀이1

- 삼항연산자를 사용하여 num1과 num2의 값이 같다가 true 일때 1을 출력하고 false일때 -1을 출력한다.

function solution(num1, num2) {
    var answer = num1 === num2 ? 1 : -1;  // condition ? exprIfTrue : exprIfFalse
    return answer;
}

다른 풀이2

- 삼항연산자를 사용하여 num1과 num2의 값이 같다가 true 일때 1을 출력하고 false일때 -1을 출력한다. 변수를 지정하지

않고 return에 그대로 입력하여 코드를 1줄 줄였다.

function solution(num1, num2) {
    return num1===num2?1:-1;
}

두 수의 곱

solution.js

function solution(num1, num2) {
    var answer = 0;
    return answer;
}

- num1과 num2를 곱한값을 return 한다.

나의 풀이

function solution(num1, num2) {
    return num1 * num2
}

다른 풀이1

화살표 함수를 사용하여 num1의 값을 a num2의 값을 b로 지정하여 문제를 풀었다.

const solution = (a, b) => a * b

나이 출력

solution.js

function solution(age) {
    var answer = 0;
    return answer;
}

- 현재 연도에서 age를 뺀 값이 태어난 연도가 되어야 한다.

나의 풀이

function solution(age) {
    return 2022 - age + 1;
}

다른 풀이1

const solution = (age) => {
    var answer = 2023 - age;
    return answer;
}

각도기

solution.js

function solution(age) {
    var answer = 0;
    return answer;
}

- angle의 값이 90도 미만일때 return 1을 출력한다

- angle의 값이 90일때 return 2를 출력한다.

- angle의 값이 90도 초과 180도 미만일때 return 3을 출력한다.

- angle의 값이 180일때 return 4를 출력한다

나의풀이

function solution(angle) {
    if(angle < 90){
        return 1
    }
    if(angle === 90){
        return 2
    }
    if(angle < 180){
        return 3
    }
    if(angle === 180){
        return 4
    }
    
}

다른 풀이1

- 봐도 모르겠다.

function solution(angle) {
    return [0, 90, 91, 180].filter(x => angle>=x).length;
}

다른 풀이2

- 삼항연산자를 사용하였다.

function solution(angle) {
    return angle < 90 ? 1 : angle === 90 ? 2 : angle < 180 ? 3 : 4;
}

짝수의 합

solution.js

function solution(n) {
    var answer = 0;
    return answer;
}

- 함수를 배열로 불러온다음, 배열안의 값을 다 더하고 평균을 구하는 식을 짜야한다.

나의 풀이

function solution(n) {
    let arr = [];

    for (let i = 0; i <= n; i++) {
        if (i % 2 === 0) {
            arr.push(i);
        }
    }
    return arr.reduce((a, b) => (a + b));
}

다른 풀이1

function solution(n) {
    var answer = 0;

    for(let i=2 ; i<=n ; i+=2)
        answer += i;

    return answer;
}

다른 풀이2

function solution(n) {
    let answer = 0
    for (let i = 1; i <= n; i++) {
        if (i % 2 === 0) {
            answer += i            
        }
    }
    return answer
}

배열의 평균값

solution.js

function solution(numbers) {
    var answer = 0;
    return answer;
}

- 배열을 매개변수에 넣고 for문을 이용하여 배열들의 총합의 값을 구하고 배열의 객체 갯수와 배열의 총합을 나눈 값을 출력 한다.

나의 풀이

function solution(numbers) {
    let sum = 0;
    for (let i = 0; i < numbers.length; i++) {
               sum += numbers[i]
        }
        return sum / numbers.length
}

다른 풀이1

function solution(numbers) {
    var answer = 0;
    for(i of numbers) {
        answer += i
    }
    return answer / numbers.length;

}

다른 풀이2

-reduce함수를 이용해 배열안의 값의 총합을 구하고 배열의객체 갯수로 나눴다.

function solution(numbers) {
    var answer = numbers.reduce((a,b) => a+b, 0) / numbers.length;
    return answer;
}

양꼬치

solution.js

function solution(n,k) {
    var answer = 0;
    return answer;
}

-n과 k두개의 매개변수 n과 k에 들어 가는 값을 구하고, 서비스 음료수의 값을 뺀다.

나의 풀이

function solution(n, k) {
    let price = (n * 12000) + (k-Math.floor(n/10))*2000
     
    return price;
}

다른 풀이1

- parseInt로 먹은 n의 값을 정수로 떨어지게 만들고 *2000하여 개당음료수 값을 계산하여 뺀다. ex) n=23(인분)

(23/10) = 2.3   parseInt(23/10) = 2

function solution(n, k) {
    return n*12000 + k*2000 - parseInt(n/10)*2000
}

다른 풀이2

- Math.floor 메소드는 값의 소수점을 모두 내림하는 메소드이다 ex) Math.floor(2.3) = 2

function solution(n, k) {
    let drink = k;
    let event = Math.floor(n / 10)

    return (n * 12000) + ((drink - event) * 2000);
}

점의 위치 구하기

solution.js

function solution(dot) {
    var answer = 0;
    return answer;
}

- 좌표가 (+,+)일떄 return 1 (-,+)일떄 return2, (-,-)일떄 return3 (+,-)일때 return4를 출력해아한다.

나의 풀이

function solution(dot) {
    if(dot[0] > 0 && dot[1] > 0 ){
       return 1
    }else if(dot[0] < 0 && dot[1] > 0 ){
        return 2
    }else if(dot[0] < 0 && dot[1] < 0){
        return 3
    }else{
        return 4
    }
}

다른 풀이1

- 삼항연산자를 사용하여 dot[0](x값) > 0 return 1 dot[0](x값) < 0 return 4  : dot[1](y값) > 0 return 2 or 3

function solution(dot) {
    return dot[0] > 0 ? dot[1] > 0 ? 1 : 4 : dot[1] > 0 ? 2 : 3;
}

오늘 처음으로 자바스크립트 알고리즘 문제를 풀어봤다. 이제 시작한지 6일째라 정신도 없고 여러가지 정보들이 

머리속에서 뒤죽박죽이지만 알고리즘 문제를 차근차근 풀어가면서 머리속에 있는 문법들을 잘 정리 해봐야겠다

자주나오는 parseInt, Math , sort, for문, 배열같이 자주나오는 문법이나 함수들은 외워두는게 좋을 것 같다.

 

할 일

- 나도코딩 자바스크립트 기본문법 듣기 (변수~객체)

- 제주베이스코딩캠프 자바스크립트  알고리즘 유튜브 보기