GitHub ID : soohyun-dev
윤수현의 개발 공간
GitHub ID : soohyun-dev
전체 방문자
오늘
어제
  • 분류 전체보기 (918)
    • 성장기록 (49)
      • 성장기록 (3)
      • 우아한테크코스 (16)
      • 프로젝트 (15)
      • TIL (14)
      • 테오의 스프린트 (1)
    • 프로그래밍언어 (88)
      • C언어 (14)
      • HTML\CSS (12)
      • JavaScript (7)
      • React (23)
      • Python (11)
      • JAVA (14)
      • TypeScript (6)
    • 알고리즘 공부 (736)
      • 코드업 - 파이썬 (108)
      • 백준 - 파이썬 (468)
      • 백준 - 자바스크립트 (125)
      • 프로그래머스 - 파이썬 (1)
      • 프로그래머스 - 자바스크립트 (34)
    • 책 리뷰 (9)
      • 프로그래밍 (3)
      • 독서 (6)
    • 전자기기 (1)
    • 일상, 일기 (18)
    • 기술 세미나 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 독해
  • 코드업파이썬
  • 영어
  • javascript
  • PYTHON
  • 프로그래머스
  • 프로그래머스풀이
  • 프로그래머스자바스크립트
  • 영어독해
  • 자바스크립트
  • 코테
  • 코딩
  • 프론트엔드
  • 코딩테스트
  • 백준파이썬
  • 백준
  • 파이썬
  • 백준풀이
  • 코드업
  • 프로그래밍언어

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GitHub ID : soohyun-dev

윤수현의 개발 공간

프로그래머스 / Level 2 , 깊이/너비 우선 탐색(DFS/BFS) , 타겟 넘버 자바스크립트 , JS
알고리즘 공부/프로그래머스 - 자바스크립트

프로그래머스 / Level 2 , 깊이/너비 우선 탐색(DFS/BFS) , 타겟 넘버 자바스크립트 , JS

2022. 9. 29. 16:13

프로그래머스 / Level 2 , 깊이/너비 우선 탐색(DFS/BFS) , 타겟 넘버 자바스크립트 , JS

 

 

 

Check Point !   ( 해당사항 ✓체크 )

1. 막힘 없이 수월하게 풀린 문제인가?

2. 1시간이내로 풀렸던 문제인가?

3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?

4. 시간을 써도 도무지 풀 수 없는 문제인가?

5. 솔루션을 찾아봤는가?

-------------------------------------------------------------------------------------------
난이도 체감
1. 최상
2. 상
3. 중
4. 하


<이해도>
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함


<덧붙일 말>
2^배열의 크기만큼의 연산이 수행되어서 이 풀이로 접근하면 틀릴거라 생각했는데 잘돌아갔다. 일단 우선해보자.

 

 

문제 출처

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

 

프로그래머스

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

programmers.co.kr

 

 

풀이

 

0번 인덱스부터 차례대로 더해가면서 재귀적으로 모든 경우들을 탐색한다.

 

각 배열 요소당 나올수 있는 수 는 +- 각각 두가지 이다.

 

배열요소당 2개씩이니까 요소가 늘어날수록 2^(요소갯수) 만큼의 경우의 수들을 확인해주어야한다.

 

idx 변수를 초기값 0으로 잡고 값이 하나씩 커지게하여 재귀적으로 호출한다.

 

최종적으로 배열의 크기와 같아질 경우 확인해야될 경우에 도달한 것으로 원하는 target 값과 같은지 비교해주고 같다면 카운트해준다.

 

 

 

 

 

 

 

정답

 

function solution(numbers, target) {
  let cnt = 0;
  const check = (idx, T, nums) => {
    if (idx === nums.length) {
      if (T === target) cnt += 1;
      return;
    }
    check(idx + 1, T + nums[idx], nums);
    check(idx + 1, T - nums[idx], nums);
  };

  check(0, 0, numbers);
  return cnt;
}

 

 

 

 

 

 

 

반응형

'알고리즘 공부 > 프로그래머스 - 자바스크립트' 카테고리의 다른 글

프로그래머스 / Level 1 , 연습문제 , 명예의 전당 (1) 자바스크립트 , JS  (0) 2022.12.07
프로그래머스 / Level 2 , 2018 KAKAO BLIND RECRUITMENT , [3차] 압축 자바스크립트 , JS  (1) 2022.09.30
프로그래머스 / Level 2 , 2019 KAKAO BLIND RECRUITMENT , 오픈채팅방 자바스크립트 , JS  (0) 2022.09.28
프로그래머스 / Level 2 , 스택/큐 , 프린터 자바스크립트 , JS  (0) 2022.09.26
프로그래머스 / Level 2 , 2019 카카오 개발자 겨울 인턴십 , 튜플 자바스크립트 , JS  (0) 2022.09.26
    '알고리즘 공부/프로그래머스 - 자바스크립트' 카테고리의 다른 글
    • 프로그래머스 / Level 1 , 연습문제 , 명예의 전당 (1) 자바스크립트 , JS
    • 프로그래머스 / Level 2 , 2018 KAKAO BLIND RECRUITMENT , [3차] 압축 자바스크립트 , JS
    • 프로그래머스 / Level 2 , 2019 KAKAO BLIND RECRUITMENT , 오픈채팅방 자바스크립트 , JS
    • 프로그래머스 / Level 2 , 스택/큐 , 프린터 자바스크립트 , JS
    GitHub ID : soohyun-dev
    GitHub ID : soohyun-dev
    환영합니다!😊 이곳은 저의 개발에 관한 내용들을 정리하는 공간입니다. 알고리즘 풀이에도 관심이 많아요. 좋은 하루 되세요~! github : soohyun_dev

    티스토리툴바