Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 삼성 SDS
- 브라이틱스 서포터즈
- 포스코 청년
- Brigthics Studio
- 혼공
- 삼성SDS Brigthics
- Brightics Studio
- 노코드AI
- 포스코 아카데미
- 혼공학습단
- 삼성SDS Brightics
- 캐글
- 팀 분석
- 추천시스템
- Brightics
- 삼성SDS
- 직원 이직여부
- 영상제작기
- Brigthics를 이용한 분석
- 데이터분석
- 모델링
- 혼공머신
- Brigthics
- Brightics를 이용한 분석
- 직원 이직률
- 혼공머신러닝딥러닝
- 개인 의료비 예측
- 데이터 분석
- 브라이틱스
- 삼성 SDS Brigthics
Archives
- Today
- Total
데이터사이언스 기록기📚
[프로그래머스] Level 2_타겟넘버(BFS/DFS) 본문
📌문제유형
BFS/DFS
📌문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📌나의 문제풀이
- 하단의 문제풀이로 풀이
- tmp에 양수, 음수 모든 경우의 수로 숫자 더해서 넣기
- tmp를 leaves에 대입
- leaves를 탐색하며 target과 맞는지 확인
프로그래머스 - 타겟 넘버 (DFS, BFS) Python
문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. `1+1+1+1+1
velog.io
#BFS 풀이
def solution(numbers, target):
answer = 0
leaves = [0]
# 모든 경우의 수 다 더하는 것
for num in numbers:
tmp = []
for parent in leaves:
tmp.append(parent + num) # 양수로 tmp에 넣기
tmp.append(parent - num) # 음수로 tmp에 넣기
leaves = tmp # leaves를 tmp로 대체
# 모든 경우의 수가 target과 맞는지 확인
for leaf in leaves:
if leaf == target:
answer += 1
return answer
📌다른 사람의 문제풀이
1) 재귀 사용
def solution(numbers, target):
if not numbers and target == 0 :
return 1
elif not numbers:
return 0
else:
return solution(numbers[1:], target-numbers[0]) + solution(numbers[1:], target+numbers[0])
2) product(데카르트 곱)을 이용한 풀이
- product : DB의 join과 유사
- 두 개 이상 리스트의 모든 조합을 구할 때 사용
- map : 여러 개의 데이터 -> 한 번에 다른 형태로 변환
- map(변환 함수, 순회 가능한 데이터)
Python 순열, 조합, product - itertools
파이썬으로 코딩할 때, 종종 순열, 조합, product를 구현하거나 사용해야 할 때가 있다. 이럴 때 힘들게 구현하지 말고 파이썬에서 만들어둔 표준 라이브러리인 itertools를 사용해보자조합을 표현할
velog.io
파이썬 map 내장 함수 사용법 (feat. List Comprehension)
Engineering Blog by Dale Seo
www.daleseo.com
from itertools import product
def solution(numbers, target):
l = [(x, -x) for x in numbers]
s = list(map(sum, product(*l)))
return s.count(target)
3) DFS 이용
- answer는 global 이용하여 전체 값 바뀌게 하기
answer = 0
def DFS(idx, numbers, target, value):
global answer
N = len(numbers)
if(idx== N and target == value):
answer += 1
return
if(idx == N):
return
DFS(idx+1,numbers,target,value+numbers[idx])
DFS(idx+1,numbers,target,value-numbers[idx])
def solution(numbers, target):
global answer
DFS(0,numbers,target,0)
return answer
📌리뷰
- 전체 경우의 수 따질 때 : BFS, DFS, product(*리스트) 사용하기
728x90
'Coding Test > 프로그래머스(Python)' 카테고리의 다른 글
[프로그래머스] Level 2_JadenCase(연습문제) (0) | 2022.10.04 |
---|---|
[프로그래머스] Level 2_최댓값과 최솟값(연습문제) (0) | 2022.10.04 |
[프로그래머스] Level 2_피로도(완전탐색) (0) | 2022.10.02 |
[프로그래머스] Level 2_모음사전(완전탐색) (0) | 2022.10.01 |
[프로그래머스] Level 2_소수 찾기(완전탐색) (0) | 2022.09.28 |
Comments