프로그래머스 DP / N으로 표현 (Python)

2025. 3. 17. 11:57·코딩 알고리즘 스터디

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

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

- 변수

  • N : 1 ~ 9 이하 
  • number : 1 ~ 32,000 이하

 

- 결과

N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 

 

- 주의사항

  • 최솟값이 8보다 크면 -1

12 = 5 + 5 + (5 / 5) + (5 / 5)
12 = 55 / 5 + 5 / 5
12 = (55 + 5) / 5

  • 이처럼 5를 사용한 횟수 중에서 가장 작은 경우는 4를 찾기
  • 나머지 제외

 

2. 문제 풀이

def solution(N, number):
    answer = -1
    dp = []
    # 1부터 8까지 반복
    for i in range(1, 9):
        numbers = set()  # i번 N을 사용하여 저장하는 집합 
        ns = int(str(N) * i) # N을 i번 이어붙인 숫자를 추가
        numbers.add(ns)
        
        for j in range(i - 1): # 모든 조합 생성
            for n1 in dp[j]:
                for n2 in dp[i - j - 2]:
                    # 덧셈, 뺄셈, 곱셈
                    numbers.update([n1 + n2, n1 - n2, n1 * n2])  
                    # 0으로 나누는 거 방지
                    if n2 != 0:
                        numbers.add(n1 // n2)
        # number가 집합 안에 있으면 저장
        if number in numbers:
            answer = i
            break
        # 만들 수 있는 숫자를 dp[i]에 저장 
        dp.append(numbers)
    return answer

'코딩 알고리즘 스터디' 카테고리의 다른 글

프로그래머스 LV.4 / 언어별 개발자 분류하기 (SQL)  (0) 2025.03.17
프로그래머스 [2025 프로그래머스 코드챌린지 2차 예선] / 택배상자 꺼내기 - java  (1) 2025.02.24
프로그래머스 [PCCP 기출문제] 1번 / 동영상 재생기  (0) 2025.02.16
프로그래머스 [PCCE 기출문제] 10번 / 데이터 분석  (0) 2025.02.16
프로그래머스 Lv.1 대충 만든 자판도움말 - Java  (1) 2025.01.12
'코딩 알고리즘 스터디' 카테고리의 다른 글
  • 프로그래머스 LV.4 / 언어별 개발자 분류하기 (SQL)
  • 프로그래머스 [2025 프로그래머스 코드챌린지 2차 예선] / 택배상자 꺼내기 - java
  • 프로그래머스 [PCCP 기출문제] 1번 / 동영상 재생기
  • 프로그래머스 [PCCE 기출문제] 10번 / 데이터 분석
Rabet
Rabet
  • 블로그 메뉴

    • 관리자
    • 글쓰기
  • Rabet
    卯
    Rabet
  • 전체
    오늘
    어제
    • Root (141)
      • KT AIVLE School (85)
        • Start (4)
        • Python프로그래밍 & 라이브러리 (6)
        • 데이터 처리 및 분석 (7)
        • 데이터 분석 및 의미 찾기 (7)
        • 웹크롤링 (10)
        • 머신러닝 (10)
        • 딥러닝 (6)
        • 시각지능 딥러닝 (10)
        • 언어지능 딥러닝 (6)
        • JAVA (4)
        • SQL (2)
        • 가상화 클라우드 (5)
        • 프로젝트 (8)
      • QA (3)
        • 오류사항 (1)
      • 웹공부 (14)
        • SPRING (11)
        • React (1)
      • 코딩 알고리즘 스터디 (23)
      • 코딩테스트 (9)
        • JAVA (8)
        • HTML (1)
      • CS공부 (3)
      • 자격증공부 (4)
        • 정보처리기사 (1)
        • 컴퓨터활용능력 1급 (1)
        • AICE Associate (1)
        • ISTQB (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
Rabet
프로그래머스 DP / N으로 표현 (Python)
상단으로

티스토리툴바