hgk0404
hgk0404.tistory
hgk0404

공지사항

전체 방문자
오늘
어제
  • 전체 카테고리
    • [컴퓨터비전]
    • [Computer Science]
      • [컴퓨터네트워크]
      • [알고리즘]
      • [자료구조 in C]
      • [C & C++]
      • [이산수학]
      • [Math]
    • [머신러닝]
      • [Numpy, Pandas]
    • [Cloud]
      • [AWS]
      • [NCP]
      • [Kubernetes]
      • [Terraform]
    • [Dev]
      • [가상환경]
      • [Linux]
      • [Docker]
    • [Python]
    • [Coding Test]
      • [백준]
      • [프로그래머스]
      • [SQL]
    • [WEB]
    • [자격증, 일상]
    • [엑셀]
    • [금융]

인기 글

최근 글

최근 댓글

250x250
hELLO · Designed By 정상우.
hgk0404

hgk0404.tistory

[Coding Test]/[프로그래머스]

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

2023. 9. 3. 16:51
728x90

문제

타켓 넘버

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

방법1. 중복 순열 이용

from itertools import product

def solution(numbers, target):
    # 각 숫자에 대해 + 또는 - 를 선택하는 모든 조합 생성
    cases = list(product(*[(x, -x) for x in numbers]))
    
    # 합이 target인 경우의 개수 반환
    return sum(1 for case in cases if sum(case) == target)

 

데카르트 곱에 관한 내용은 다음 블로그를 참고하시면 됩니다 :) 참고 블로그 

중복순열이 가능한 이유

예시에서 보듯이 1을 여러번 반복해도 되는데 +가 들어간 1과 -가 들어간  1의 경우를 모두 찾아내서 더한 수가 타겟 넘버가 되는지 확인해야 하는 문제입니다. 순서를 신경쓰지 않는다는 점에서 순열이고, 여러번 반복해도 된다는 점에서 중복입니다. product를 사용해서 풀었습니다.

 

방법 2. bfs를 이용

from collections import deque
def solution(numbers, target):
    answer = 0
    q = deque()
    n = len(numbers)
    q.append([numbers[0],0])
    q.append([-1*numbers[0], 0])
    while q:
        tmp, depth = q.popleft()
        depth += 1
        if depth < n:
            q.append([tmp+numbers[depth], depth])
            q.append([tmp-numbers[depth], depth])
        else:
            if tmp == target:
                answer += 1
    return answer

 

728x90
저작자표시 동일조건

'[Coding Test] > [프로그래머스]' 카테고리의 다른 글

[프로그래머스] lv3 아이템 줍기 / 파이썬 [해설과 다른 풀이], 고득점kit  (0) 2023.09.08
[프로그래머스] 단어 변환  (0) 2023.09.07
[프로그래머스] 게임 맵 최단거리  (2) 2023.09.07
[프로그래머스] 네트워크  (0) 2023.09.03
[카카오] 42888 python : 오픈채팅방  (0) 2022.05.22
'[Coding Test]/[프로그래머스]' 카테고리의 다른 글
  • [프로그래머스] 단어 변환
  • [프로그래머스] 게임 맵 최단거리
  • [프로그래머스] 네트워크
  • [카카오] 42888 python : 오픈채팅방
hgk0404
hgk0404
공부기록

티스토리툴바