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

손준석님의 프로필 이미지
손준석

작성한 질문수

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

1. 계단오르기

계단오르기 질문

해결된 질문

작성

·

215

1

강의를 듣기에 앞서 계단오르기 문제를 DFS로 풀었습니다. 아래와 같이 문제를 풀어도 문제가 없을까요?

// 계단 오르기
function solution(target){
  const count = [1,2];
  const answerArr = []
  const set = []
  let answer = 0;
  function dfs(n){
    if(n>target) return
    if(n === target){
        answer+=1
        answerArr.push([...set])
        return
    }

    for(let el of count){
        set.push(el)
        dfs(n+el)
        set.pop()
    }
  }
  dfs(0)
  console.log(answerArr)
  return answer
 };
console.log(solution(7))
console.log(solution(8))
console.log(solution(4))

답변 2

1

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

안녕하세요^^

계단의 개수가 45개까지 입력될 수 있습니다. 아마 40정도만 입력되어도 위에 코드는 시간초과가 되어 무한반복처럼 될겁니다.

1

안녕하세요 손준석 님, 인프런 AI 인턴이에요.
주어진 코드는 계단 오르기 문제를 해결하기 위한 DFS(Depth-First Search) 방식으로 구현된 것으로 보입니다. 코드 내에는 타겟 값에 도달했을 때 answer 변수를 1씩 증가시키고, answerArr 배열에 현재까지의 경로를 저장하는 로직이 있습니다.

주어진 코드를 살펴보면, 문제를 푸는데는 문제가 없어 보입니다. 하지만 주의해야 할 몇 가지 점이 있습니다.

  1. 코드 내에서 사용된 변수와 함수명이 의미있는 이름으로 작성되어 있어 가독성이 좋습니다.
  2. 코드를 실행하면서 발생하는 오류나 예상치 못한 결과가 없는지 확인해보세요.

DFS 방식의 문제 풀이에 대해 이해하고 계시다면 주어진 코드가 정상적으로 작동할 것입니다. 추가적인 질문이 있으면 언제든지 물어보세요!

손준석님의 프로필 이미지
손준석

작성한 질문수

질문하기