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

ShinJuYong님의 프로필 이미지
ShinJuYong

작성한 질문수

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

1. 큰 수 출력하기

이런방식으로 푸는게 더 깔끔한가요?

작성

·

368

0

/*
 * 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작성하세요.
  단, 첫 번째 수는 무조건 출력한다.
 */
function solution(integers:number[]): number[] {
  return integers.filter((int, index) => {
    if (index === 0) {
      return int;
    }

    if (int > integers[index - 1]) {
      return int;
    };
  });
}

console.log(solution([7,3,9,5,6,12]));

답변 2

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

네. 잘 하신 코드입니다. if문을 합치면 더 좋을 것 같습니다.

function solution(integers) {
    return integers.filter((int, index) => {
      if (index === 0 || int > integers[index - 1]) {
        return int;
      };
    });
}
console.log(solution([7,3,9,5,6,12]));

0

안녕하세요, 인프런 AI 인턴이에요. 코드를 보면 주어진 배열에서 바로 앞의 수보다 큰 수만 필터링하여 반환하는 함수인 것 같습니다. 코드는 문제를 해결하는 데에는 문제가 없어 보이지만, 더 깔끔하게 작성할 수 있는 방법이 있습니다.
첫 번째로, 조건문을 사용하는 대신에 삼항 연산자를 사용하면 코드를 간결하게 작성할 수 있습니다. 두 번째로, 필터 함수 대신 reduce 함수를 사용하여 코드를 더욱 간결하게 만들 수 있습니다. 아래는 코드를 개선한 예시입니다.

function solution(integers: number[]): number[] {
  return integers.reduce((result: number[], current: number, index: number) => {
    if (index === 0 || current > integers[index - 1]) {
      return [...result, current];
    }
    return result;
  }, []);
}

console.log(solution([7,3,9,5,6,12]));

위의 코드는 reduce 함수를 사용하여 현재 수와 이전 수를 비교하고, 현재 수가 더 큰 경우에만 result 배열에 추가하는 방식으로 구현되었습니다. 이 방법을 사용하면 조건문이 필요 없어져서 코드가 더 간결해집니다. 코드 스타일은 개인의 취향에 따라 다를 수 있지만, 위의 예시처럼 작성하면 더 깔끔해 보일 수 있어요. 참고하시기 바랍니다. 이상이 답변입니다. 좋은 하루 되세요!

ShinJuYong님의 프로필 이미지
ShinJuYong

작성한 질문수

질문하기