인프런 커뮤니티 질문&답변

ksu8904님의 프로필 이미지
ksu8904

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

2. 보이는 학생

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

작성

·

182

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));

 

ksu8904님의 프로필 이미지
ksu8904

작성한 질문수

질문하기