알고리즘 문제 | Lv.0 - Lv.1

어니·2022년 10월 11일
0

Algorithm

목록 보기
3/5
post-thumbnail

Lv.0 각도기

// 내가 푼 풀이
    if(angle < 90) {
        return 1
    } else if (angle === 90 ){
        return 2
    } else if (angle < 180) {
        return 3
    } else if (angle === 180) {
        return 4
    }

  • filter 함수 [배열함수]
    filter는 자신이 호출한 배열의 모든 요소를 돌면서 인수로 전달 받은 콜백함수를 반복한다. 즉 filter 함수는 반환값이 true인 요소만 추출하여 새로운 배열을 만들어 낸다.
	arr.filter((item,index,arr) => (
		// 세 요소를 얻을 수 있다
    1. item : 요소들
    2. index : 
))




Lv.0 배열의 평균값

내가 푼 풀이
    let num =0;
    for(i=0; i < numbers.length; i++) {
        num += numbers[i]
    }
    return num / numbers.length;
=> 아직 for문에서 벗어나지 못하는 나란 녀석,,ㅎ

= for문으로 풀었을 때 걸리는 시간

=reduce메서드로 풀었을 때 걸리는 시간

약 2배차이..!

  • reduce 함수 [배열함수]
    배열을 돌면서 하나의 결과값을 반환한다.

arr.reduce((acc,cur,index,arr) => (
1. 누적값 (맨 처음에는 초기값)
2. 현재 배열의 값
3. 인덱스
4. 배열 그 잡채
))

Lv.0 중복된 숫자 개수

내가 푼 풀이
function solution(array, n) {
    return array.filter((item) => (item === n)).length
}

filter 메서드 써먹어봄ㅎㅎ





Lv.1 나머지가 1이 되는 수 찾기

이 문제의 key point는 n을 나눌 때 n이상의 수로 n을 나눌 수 없다는 것!
즉, n = 10 이면 11로 10을 나눌 수 없다. 23로 10을 나눌 수 없다.
1. n 이하의 수로만 n을 나눌 수 있기 때문에 for문으로 n이하의 수를 찾아주고
2. n을 i로 반복해서 나눠준 다음
3. 제일 작은 1을 반환하는 것을 return해 주었다.

내가 푼 풀이
function solution(n) {
    for(i=1; i < n; i++) {
        if(n % i === 1) {
            return i;
        }
    }
}

조금..뿌듯..헤헤

profile
개린이

0개의 댓글