[ 문제 풀이 ] 프로그래머스 타겟 넘버

Shin·2022년 2월 11일
0

코딩테스트

목록 보기
10/13

📔 문제 설명

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

-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3

사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.

🧰 변수 설명

  • answer
    • 타입 : 정수
    • 저장 데이터 : 최종 타겟 넘버 가능 수를 저장할 변수
  • result
    • 타입 : 리스트
    • 저장 데이터 : 계산 결과를 담을 리스트
  • numbers
    • 타입 : 리스트
    • 저장 데이터 : n 개의 음이 아닌 정수 리스트
  • target
    • 타입 : 정수
    • 저장 데이터 : 목표 값
  • temp
    • 타입 : 리스트
    • 저장 데이터 : 임시 저장 리스트

🖨풀이 과정

1. 최종 값을 위한 변수와 계산 결과를 위한 리스트 변수 선언 [answer, result]
2. numbers 의 값들을 하나씩 계산하기 위해 for문 작성
3. 계산 값을 임시로 저장할 리스트 선언 [temp]
4. result의 값들을 하나씩 계산하기 위해 for문 작성
5. numbers 의 값들을 모두 순회한 후 result에 저장된 최종 값들을 target과 비교
6. 최종 값을 반환
def solution(numbers, target):
    # 풀이과정 1 
    answer = 0  # 최종 타겟 넘버 가능 수를 저장할 변수
    result = [0]  # 계산 결과를 담을 리스트
    # 풀이과정 2
    for num in numbers:  # 값을 하나씩 비교하기 위해 for 문 사용
        # 풀이과정 3
        temp = []  # 임시 저장 리스트 변수
        # 풀이과정 4
        for r in result:  # 각 값 마다 더하고 빼고를 반복하기위해 반복
            temp.append(r + num)
            temp.append(r - num)
        result = temp
    # 풀이과정 5
    for r in result:  # 순회하며 타켓 값과 같은 값이 있을 경우 카운트 증가
        if r == target:
            answer += 1
    return answer

정확성: 100.0
합계: 100.0 / 100.0

profile
누군가의 선택지가 될 수 있는 사람이 되자

0개의 댓글