ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 나머지가 1이 되는 수 찾기
    너의말이보여네약점algorithm 2022. 4. 12. 23:31

    풀이

    function solution(n) {
        const startAt = 1; 
        // (자아비판) endNum을 매개변수로 넘기지못해서 아쉬운 풀이
        // 스프레드 연산자로 넘겨서 element 넣고빼는게 자유롭지가 못함
        const rangeArr = [...Array(n).keys()].map(key => key + startAt);
        return rangeArr.find((e)=> (n % e) === 1)
    }

    원래는 배열 rangeArr에 있는 첫번째 요소를 array.shift()로 제거하려고 했는데 생각해보니 스프레드 연산자로 구현해버렸기 때문에 전체가 사라지는 (...) 것때문에 map으로 전체 요소에 1을 더해주었다~ index는 0부터 시작이어서 그렇구나

    JS에서 파이썬의 range함수를 구현하는 방법에 여러가지가 있는데 재미있다~ ㄲㄲ

     

     

    console.log(rangeArr5)를 보면 n=5이면 0부터 시작해서 4까지 만들어주기 때문에 굳이 map으로 1을 더해주어서 약간.. 아쉬웠다.


    탐토님 풀이

    function range(start, end){
      return Array.from({length: end - start}, (_, i) => start + i);
    }
    
    function solution(n) {
        return range(1, n).find(x => n % x === 1);
    }

    이 풀이에서 좋았던 건 파이썬의 range함수를 그대로 구현해서 start와 end를 매개변수로 지정해줌으로써 범위를 직관적으로 볼 수 있다는 것이다.

    탐토님 풀이2

    function* range(start, end){
      let i = start;
    	while (i < end){
    //코루틴 : 이 함수는 yield를 만날때마다 리턴한다, 제너레이터함수(호출될때마다 함수내부의 state 유지,
    // 2번째 호출이 될땐 내부상태를 가지고 실행~
    // yield 시킨 range함수를 만듦
    
    	yield i++;
      }
      return;
    }
    // generator 는 next를 호출할 때마다 값을 하나씩 yield 해줌
    // type next = () => { value: T | undefined, done: boolean }
    
    > const generator = range(1, 4)
    undefined
    > generator.next()
    {value: 1, done: false}
    > generator.next()
    {value: 2, done: false}
    > generator.next()
    {value: 3, done: false}
    > generator.next()
    {value: undefined, done: true}
    
    // ... 스프레드 연산자는 이터레이터/제네레이터를 이용해서 구현되어 있음
    [...range(1,4)]
    // [1,2,3]

     

     

     

     


    > iter = Array(5).keys() // keys, values, entries도 iterator 를 반환함
    Array Iterator [0, 1, 2, 3, 4]
    
    > iter.next()
    {value: 0, done: false}
    > iter.next()
    {value: 1, done: false}
    
    > [...iter] // 스프레드 연산자를 쓰면 나머지 값만 들어감
    [2, 3, 4]

    '너의말이보여네약점algorithm' 카테고리의 다른 글

    졸업선물 JS-> Python 번역  (0) 2022.10.13
    방문 길이  (0) 2022.09.06
    알고리즘 학습방향 질문 내용 정리  (0) 2022.04.07
    부족한 금액 계산하기  (0) 2022.04.06
    비밀지도  (0) 2022.04.05
Designed by Tistory.