-
[Python] 프로그래머스LV2 타겟 넘버Algorithm/Problem Solving 2022. 11. 1. 11:55
https://school.programmers.co.kr/learn/courses/30/lessons/43165
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 문제 파악
1. 연산자는 오직 덧셈과 뺄셈만 있다.
2. 주어진 정수들을 덧셈과 뺄셈을 활용하여 계산했을 때 타겟 넘버 만드는 방법의 수를 return한다.
- 문제 해결 흐름
1. +와 -로 주어진 정수들과 조합할 수 있는 경우의 수를 구한다.
조합을 구하는 문제는 백준 사이트에서 N과M 시리즈를 익혀 놓으면 도움이 많이 된다.
def combination(crnt_list, numbers, target): global answer operational = ['-', '+'] if len(crnt_list) == len(numbers): # numbers의 요소의 개수와 일치해야한다. print(crnt_list) total = 0; for i in range(len(crnt_list)): if(crnt_list[i] == '-'): # '-'일 경우 total 변수에 -를 해준다 total -= numbers[i] elif(crnt_list[i] == '+'): # '+'일 경우 total 변수에 +를 해준다. total += numbers[i] if total == target: # target과 결과가 같다면 answer += 1 answer += 1; return for oper in operational: crnt_list.append(oper) combination(crnt_list, numbers, target) crnt_list.pop()
print(crnt_list) Python
answer = 0 def combination(crnt_list, numbers, target): global answer operational = ['-', '+'] if len(crnt_list) == len(numbers): print(crnt_list) total = 0; for i in range(len(crnt_list)): if(crnt_list[i] == '-'): total -= numbers[i] elif(crnt_list[i] == '+'): total += numbers[i] if total == target: answer += 1; return for oper in operational: crnt_list.append(oper) combination(crnt_list, numbers, target) crnt_list.pop() def solution(numbers, target): combination(crnt_list=[], numbers=numbers, target=target) return answer print(solution([4,1,2,1], 4))
'Algorithm > Problem Solving' 카테고리의 다른 글
[Javascript] 백준 1987 알파벳 (0) 2023.03.09 [Javascript] 프로그래머스 LV2 귤 고르기 (0) 2022.11.24 [Javascript][Python] 프로그래머스 LV2 큰 수 만들기 (0) 2022.11.15 [Python] 2021 KAKAO BLIND RECRUITMENT 메뉴 리뉴얼 (0) 2022.10.28 [Javascript][Python] 프로그래머스 LV2 멀리 뛰기 (0) 2022.10.28