백준 / 14888번 / 연산자 끼워넣기 / python 파이썬 / 백트래킹

2024. 9. 28. 14:00·코딩테스트/백준 (python)

 

문제 :  https://www.acmicpc.net/problem/14888

 

 

 

코드

N = int(input())
nums = list(map(int, input().split()))
op = list(map(int, input().split()))

maxn = -1e9
minn = 1e9

def dfs(n, i, add, sub, mul, div):
    global maxn, minn

    if i == N:
        maxn = max(maxn, n)
        minn = min(minn, n)
        return
    else:

        if add:
            dfs(n + nums[i], i+1, add - 1, sub, mul, div)

        if sub:
            dfs(n - nums[i], i+1, add, sub - 1, mul, div)

        if mul:
            dfs(n * nums[i], i+1, add, sub, mul - 1, div)

        if div:
            dfs(int(n / nums[i]), i+1, add, sub, mul, div - 1)

dfs(nums[0], 1, op[0], op[1], op[2], op[3])

print(maxn)
print(minn)

 

알게된 것

 

이 문제는 연산자의 모든 조합의 경우를 생각하며 최댓값과 최솟값을 구해야하기 때문에 브루트포스의 문제에 속한다. 하지만 itertools의 combinations, permutations 등을 이용하면 시간초과가 발생한다. 따라서 백트래킹(DFS)의 재귀를 활용해서 문제를 풀어야 한다. 

 

또한 문제의 조건과 같이 음수의 나눗셈 처리 시, 몫을 C++14의 기준을 따르게 하기 위해 int()를 사용하여 조건을 만족시킬 수 있다.

 

'코딩테스트 > 백준 (python)' 카테고리의 다른 글

백준 / 2579번 / 계단 오르기 / python 파이썬  (3) 2024.10.08
백준 / 1931번 / 회의실 배정 / python 파이썬  (2) 2024.10.02
백준 /1912번 / 연속합 / python 파이썬  (0) 2024.09.27
백준 / 1021번 / 회전하는 큐 / python 파이썬  (2) 2024.09.25
백준 / 1541번 / 잃어버린 괄호 / python 파이썬  (0) 2024.09.23
'코딩테스트/백준 (python)' 카테고리의 다른 글
  • 백준 / 2579번 / 계단 오르기 / python 파이썬
  • 백준 / 1931번 / 회의실 배정 / python 파이썬
  • 백준 /1912번 / 연속합 / python 파이썬
  • 백준 / 1021번 / 회전하는 큐 / python 파이썬
seulll
seulll
개인 공부 / 정리 블로그입니다 https://github.com/seul1009
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
    • 분류 전체보기 (345) N
      • 코딩테스트 (237) N
        • programmers (python) (158)
        • 백준 (python) (77) N
      • 자료구조 | 알고리즘 (14)
      • 개발 | 프로젝트 (43)
        • Python (4)
        • Java | Spring (7)
        • Android (5)
        • Unity (3)
        • API (4)
      • CS (15)
        • Network (5)
        • SQL (2)
        • OS (4)
      • 데이터 분석 (14)
      • 기타 (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 설정
  • 링크

    • GitHub
  • 인기 글

  • 태그

    프로그래머스
    백엔드
    Python
    2 x n 타일링
    confusion matrix
    야근 지수
    모델 성능 평가
    프렌즈4블록
    kakao map api
    asterisk
    박스플롯
    API
    오블완
    카카오맵
    Greedy
    코딩테스트
    카카오맵 api
    대입 표현식
    train_test_split
    데이터분석
    파이썬
    백엔드 개발자 역량
    티스토리챌린지
    웹크롤링
    Boxplot
    solving environment
    그리디 알고리즘
    바다코끼리
    백엔드 개발자
    오차행렬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
seulll
백준 / 14888번 / 연산자 끼워넣기 / python 파이썬 / 백트래킹
상단으로

티스토리툴바