흐기하라
701
2019-06-08 18:47:28 작성 2019-06-08 18:49:55 수정됨
8
758

javascript 배열 내 뺄셈 질문드립니다.(알고리즘)


멍청인가봐요...

지금 책보면서 알고리즘 하나 풀고있는데 여쭤볼게있습니다.

배열 [4, 1, 4, 7, 6]가 있고 return값은 [3, 1, 1, -1, -1] 입니다.

배열의 값이 자기보다 큰값을 찾고 찾은 값의 회전수?를 더해주면 되는것 같은데요

첫번째배열인4가 배열3번째의7보다 작기때문에 3을 반환하고 두번째인 1도 4보다 작기때문에 1을반환하고요

세번째인 4도 7보다 작기때문에 1을 반환해서 [3,1,1.....] 등 나오는데요 그 값이 작으면

-1로 리턴합니다.


배열을 순회하면서 자기보다 큰값의 위치를 찾아서 cnt++해주고

새로운 배열에 푸쉬해주면 될것같은데 

생각보다 잘안되네요..어떻게 해결해야할가요?

0
  • 답변 8

  • 푸르게
    558
    2019-06-08 19:55:42

    문제가 이해가 안되네요/

  • 쿵따리쿵쿵따
    270
    2019-06-08 19:58:03

    저도 아무리 읽어봐도 왜 return값이 저렇게 나오는지 이해가 안되네요...

  • rezigrene
    1k
    2019-06-08 20:03:40
    class Node {
    constructor(index, value) {
    this.index = index;
    this.value = value;
    }
    }

    function main() {
    const data = [4, 1, 4, 7, 3];
    const stack = [];
    const result = [-1, -1, -1, -1, -1];
    for (let i = 0; i < data.length; i++) {
    let currentNode = new Node(i, data[i]);
    while (stack.length > 0 && stack[stack.length - 1].value < currentNode.value) {
    let node = stack.pop();
    result[node.index] = i - node.index;
    }
    stack.push(currentNode);
    }
    console.log(result);
    }
    main();
  • 한우소불고기
    11
    2019-06-08 23:10:49 작성 2019-06-09 00:32:13 수정됨

    const arr = [4, 1, 4, 7, 6];
    let ret = [];
    for(var i = 0; i<arr.length; ++i){
    var value = -1;
    for(var j = i+1; j<arr.length; ++j){
    if(arr[i]<arr[j]) {
    value = j-i;
    break;
    }
    }
    ret.push(value);
    }

    console.log(ret);
  • 김주빈
    46
    2019-06-08 23:27:26

    0번째인덱스인4 보다 큰수는 3번째인덱스인 7이니까 3 - 0 리턴값이 3이고 1번째인덱스인 1보다 큰수는 2번째 인덱스인 4니까 2 -  1 해서 1을 리턴한다는 뜻인가요??

  • 한우소불고기
    11
    2019-06-08 23:54:19

    1 회전 :  0번째 인덱스 보다 큰수 3번 

    2회전 :  1번째  인덱스 보다 큰수 1번

    3회전 :  2번째  인덱스 보다 큰수 1번 

    ..... 회전이 순차적으로 되서 값이 [3, 1, 1, -1, -1] 나옵니다. 

    value = j-i; 회전 카운터 입니다.




  • 흐기하라
    701
    2019-06-09 01:03:45

    한우소불고기/ 와 진짜 한끗차이로 틀렸네요 ㅠ 저거였군요. 감사합니다!

  • 흐기하라
    701
    2019-06-09 01:06:26
    김주빈 / 네 그뜻이 맞아요. 한우소불고기님이 답글달아주셨는데 저도 이중포문돌리고 이프문저렇게 했는데 밸류값을 잘못넣었네요 ㅠ.
  • 로그인을 하시면 답변 을 등록할 수 있습니다.