Junior-Developer
Home
  • Category (316)
    • 문제풀이 (270)
      • 백준oj (201)
      • 프로그래머스 (53)
      • 명품 자바 프로그래밍(개정4판) (11)
      • 구름 (5)
    • 알고리즘 (6)
    • Node.js (2)
    • 체크리스트 (37)
블로그 내 검색
Home

Junior-Developer

1일 1커밋! 1일 1 백준!

  • 문제풀이/프로그래머스

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

    2021. 11. 19.

    by. Hyeon-Uk

    반응형

    https://programmers.co.kr/learn/courses/30/lessons/43165?language=java 

     

    코딩테스트 연습 - 타겟 넘버

    n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+

    programmers.co.kr


     

    풀이

    DFS를 이용해서 문제를 해결했다. 첫번째 원소부터 마지막 원소까지 탐색을 하면서, 해당 원소를 덧셈했을때와 뺄셈했을때의 경우를 모두 구해준 뒤, 마지막 원소까지 탐색을 했고 그 경우에 target과 같다면 answer를 +1 해준다.

     

    시간복잡도

    숫자의 개수는 2~20개 이고, 각 원소마다의 경우의 수는 2가지의 경우이므로 , O(220)이 된다.

     

    코드

    class Solution {
        public static int answer=0;
        
        public void dfs(int[] numbers,int i,int ret,int target){
            if(i==numbers.length){
                if(target==ret) answer++;
                return;
            }
            dfs(numbers,i+1,ret+numbers[i],target);
            dfs(numbers,i+1,ret-numbers[i],target);
        }
        
        public int solution(int[] numbers, int target) {
            dfs(numbers,0,0,target);
            return answer;
        }
    }
    반응형
    저작자표시 (새창열림)

    '문제풀이 > 프로그래머스' 카테고리의 다른 글

    [프로그래머스] 단어 변환  (0) 2021.11.21
    [프로그래머스] 네트워크  (0) 2021.11.19
    [프로그래머스] 단속카메라  (0) 2021.11.01
    [프로그래머스] 가장 큰 정사각형 찾기  (0) 2021.10.10
    [프로그래머스] 동물 수 구하기  (0) 2021.09.05

    댓글

    관련글

    • [프로그래머스] 단어 변환 2021.11.21
    • [프로그래머스] 네트워크 2021.11.19
    • [프로그래머스] 단속카메라 2021.11.01
    • [프로그래머스] 가장 큰 정사각형 찾기 2021.10.10
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
Hyeon-Uk

티스토리툴바