Written by Jieun
Home
  • 전체 (129)
    • Git (1)
    • React, Next (57)
    • HTML & CSS (2)
    • JavaScript, TypeScript (24)
    • Node.js (11)
    • MongoDB (4)
    • AWS (2)
    • 코딩테스트, 알고리즘 (17)
    • etc (8)
    • 일상 (1)
블로그 내 검색

Written by Jieun

👩🏻‍💻 내 마음대로 Today I Learned

  • 코딩테스트, 알고리즘

    [프로그래머스] 타겟 넘버 (JS)

    2023. 11. 29.

    by. 지은이: 김지은

    728x90

     

     

    문제 설명

    https://school.programmers.co.kr/learn/courses/30/lessons/43165

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

     

    제한사항

    • 주어지는 숫자의 개수는 2개 이상 20개 이하입니다.
    • 각 숫자는 1 이상 50 이하인 자연수입니다.
    • 타겟 넘버는 1 이상 1000 이하인 자연수입니다.

     

    입출력 예

    numbers target return
    [1, 1, 1, 1, 1] 3 5
    [4, 1, 2, 1] 4 2

     

     

    문제 풀이

    깊이 우선 탐색(DFS)를 사용해서 가능한 경우의 모든 수를 탐색하고, target 넘버를 만들 수 있는 경우의수를 찾기

    재귀적으로 함수를 호출해서 호출할 때마다 index를 증가시켜 배열의 다음 원소를 탐색하기

    function solution(numbers, target) {
        var answer = 0; // target을 만들 수 있는 경우의 수
        
        // 깊이 우선 탐색하기(배열 인덱스, 누적 합)
        function dfs(index, sum) {
            // 인덱스가 배열 끝(number.length)까지 탐색했으면 실행
            if(index === numbers.length) {
                // 누적합이 target과 같다면 answer 경우의 수 증가
                if(sum === target) {
                    answer++
                }
                return
            }
            
            // 배열끝에 도달하지 않았을 경우
            // 재귀 호출 (인덱스 1씩 증가시키기, 현재 숫자를 더한경우와 뺀 경우를 호출)
            dfs(index + 1, sum + numbers[index])
            dfs(index + 1, sum - numbers[index])
        }
        
        dfs(0, 0); // 0부터 깊이 우선 탐색 시작
        return answer;
        
    }

     

     

    저작자표시 (새창열림)

    '코딩테스트, 알고리즘' 카테고리의 다른 글

    [프로그래머스] H-Index (JS)  (0) 2023.12.16
    그래프 알고리즘, 깊이/너비 우선 탐색(DFS/BFS)  (0) 2023.11.28
    연속 부분 최대합으로 알아보는 완전탐색과 시간복잡도  (1) 2023.11.26
    동전 거스름돈으로 알아보는 탐욕 알고리즘 (Greedy Algorithm)  (0) 2023.11.17
    피보나치 수열로 알아보는 동적계획법(Dynamic Programming)  (1) 2023.11.16

    댓글

    관련글

    • [프로그래머스] H-Index (JS) 2023.12.16
    • 그래프 알고리즘, 깊이/너비 우선 탐색(DFS/BFS) 2023.11.28
    • 연속 부분 최대합으로 알아보는 완전탐색과 시간복잡도 2023.11.26
    • 동전 거스름돈으로 알아보는 탐욕 알고리즘 (Greedy Algorithm) 2023.11.17
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Designed by Nana
블로그 이미지
지은이: 김지은

티스토리툴바