[프로그래머스][Level2][Java] 타겟 넘버

2022. 3. 25. 18:24·프로그래머스/Level 2

문제

 

풀이코드

static int answer = 0;                          	//답을 static변수로 설정
public int solution(int[] numbers, int target) {
    DFS(0,0,numbers,target);
    return answer;
}

public void DFS(int L, int sum, int[] arr, int target){     //타겟 넘버를 계산해줄 메서드 생성
    if(L == arr.length){                                    //L(레벨)이 arr의 길이와 같을 경우
        if(sum == target){                                  //합(sum)과 target의 값이 같으면 answer을 1증가
            answer++;
        }
    }else{                                              //L(레벨)이 arr의 길이와 다를 경우
        DFS(L+1,sum+arr[L],arr,target);        		//합에 arr[]값을 더한 것을 재귀
        DFS(L+1,sum-arr[L],arr,target);        		//합에 arr[]값을 뺀 것을 재귀
    }
}

이 문제는 DFS와 재귀함수의 원리를 이용하면 풀기 쉬운 문제인 것 같다.

근데 다른 분의 풀이를 보니 원리는 똑같은데 뭔가 좀 더 빠른 것 같아서 가져와봤다.

 

다른사람의 풀이

class Solution {
    public int solution(int[] numbers, int target) {
        int answer = 0;
        answer = dfs(numbers, 0, 0, target);
        return answer;
    }
    int dfs(int[] numbers, int n, int sum, int target) {
        if(n == numbers.length) {
            if(sum == target) {
                return 1;
            }
            return 0;
        }
        return dfs(numbers, n + 1, sum + numbers[n], target) + dfs(numbers, n + 1, sum - numbers[n], target);
    }
}

내 풀이가 이해가 갔다면 이 풀이도 쉽게 이해할 수 있을 것이라 생각하여 따로 설명은 안붙이겠다.

내 풀이는 주석에 써놓았다.

저작자표시 비영리 (새창열림)

'프로그래머스 > Level 2' 카테고리의 다른 글

[프로그래머스][Level2][Java] 방문 길이  (0) 2022.04.01
[프로그래머스][Level2][Java] 가장 큰 수  (0) 2022.03.25
[프로그래머스][Level2][Java] 더 맵게  (0) 2022.03.23
[프로그래머스][Level2][Java] 주식가격  (0) 2022.03.21
[프로그래머스][Level2][Java] 프린터  (0) 2022.03.18
'프로그래머스/Level 2' 카테고리의 다른 글
  • [프로그래머스][Level2][Java] 방문 길이
  • [프로그래머스][Level2][Java] 가장 큰 수
  • [프로그래머스][Level2][Java] 더 맵게
  • [프로그래머스][Level2][Java] 주식가격
BvrPark
BvrPark
코드 퍼즐과 개발 일상
  • BvrPark
    비버의 개발 일지
    BvrPark
  • 전체
    오늘
    어제
    • 분류 전체보기 (121)
      • JAVA (7)
        • 메서드 외울 것 (2)
      • 프로그래머스 (56)
        • 총 풀이 코드(깃허브) (1)
        • Level 1 (22)
        • Level 2 (33)
      • 백준 알고리즘(단계 별) (16)
        • 총 풀이 코드(깃허브) (1)
        • 1. 입출력과 사칙연산 (2)
        • 2. if 문 (2)
        • 3. for문 (1)
        • 4. while문 (2)
        • 5. 1차원 배열 (3)
        • 6. 함수 (1)
        • 7. 문자열 (1)
        • 8. 기본수학 1 (3)
      • 백준 알고리즘(solved.ac) (9)
        • 총 풀이 코드(깃허브) (1)
        • class2 (8)
      • LeetCode 문제 풀이 (4)
        • 총 풀이 코드(깃허브) (1)
        • Easy (3)
      • 코드업 알고리즘 (7)
      • git과 github사용법 (4)
      • html, css, javaScript (2)
      • 프로젝트 (11)
        • 순수 Java 프로젝트 (2)
        • 쇼핑몰 프로젝트 (2)
        • 게시판 프로젝트 (5)
        • 근태관리 프로젝트 (2)
      • 커피타임 (2)
        • 2023년 (2)
        • 2024년 (0)
  • 블로그 메뉴

    • 링크

      • 포트폴리오
      • 깃허브
    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • Designed By정상우
    BvrPark
    [프로그래머스][Level2][Java] 타겟 넘버
    상단으로

    티스토리툴바