• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

이중for문이 더 모르겠어요..

22.10.18 00:05 작성 조회수 147

0

앞선 강의를 들으니 max를 이용해서 문제가 풀렸는데,

2중 for문을 이용한 경우 결과가 안나와요...

조건은 만족하는데 i일때 j보다 큰 모든 경우에 푸쉬 되거나 카운팅이 되는데, 한번만 호출 되게 하는 방법이 궁금합니다.

      function solution(arr) {
        let answer = [];
        answer.push(arr[0]);
 
        for (let i = 1; i < arr.length; i++) {
          for (let j = 0; j < i; j++) {
            if (arr[i] > arr[j]) {
              answer.push(arr[i]);
            }
          }
        }

        return answer;
      }

      let arr = [130, 135, 148, 140, 145, 150, 150, 153];
      console.log(solution(arr));

답변 1

답변을 작성해보세요.

2

안녕하세요^^

이런건 스스로 계속 도전해보는게 좋습니다. 문제를 푸는게 중요한 게 아니라 계속 고민해보고 도전해보는게 중요합니다. 그래야 실력이 올라갑니다. 못 풀어도 별 상관없습니다. 다른 문제 풀다가 한 두달 후에 다시 와서 해보면 풀릴때가 많습니다. 아래는 위에 코드를 정답이 나오게 수정해보았습니다.

function solution(arr) {
  let answer = [];
  answer.push(arr[0]);

  for (let i = 1; i < arr.length; i++) {
    let flag = true;
    for (let j = 0; j < i; j++) {
      if (arr[i] <= arr[j]) {
        flag = false;
        break;
      }
    }
    if(flag == true) answer.push(arr[i]);
  }

  return answer;
}

let arr = [130, 135, 148, 140, 145, 150, 150, 153];
console.log(solution(arr));