[백준] 14888번, 연산자 끼워넣기 (Python)

2021. 8. 17. 18:05·알고리즘/백준
728x90
반응형

문제

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

 

14888번: 연산자 끼워넣기

첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 

www.acmicpc.net

 

코드

import sys

n = int(input())
value = list(map(int, input().split()))
calc = list(map(int, input().split())) # +,-,*,//
maxx = -(sys.maxsize)
minn = sys.maxsize
sum = value[0]

def recursive(index, sum, plus,minus,mul,div):
    global maxx, minn

    # 정답을 찾은 경우
    if index == n:
        maxx = max(maxx, sum)
        minn = min(minn, sum)
        return

    # 불가능한 경우
    # 이 문제는 불가능한 경우가 없다.
    # 연산자가 n-1개 주어지고 연산자 넣는곳도 n-1개가 있기때문

    if plus > 0:
        recursive(index+1, sum+value[index],plus-1,minus,mul,div)
    if minus > 0:
        recursive(index+1, sum-value[index],plus,minus-1,mul,div)
    if mul > 0:
        recursive(index+1, sum*value[index],plus,minus,mul-1,div)
    if div > 0:
        if sum >= 0:
            recursive(index+1, sum//value[index],plus,minus,mul,div-1)
        else:
            recursive(index+1, -(-sum//value[index]),plus,minus,mul,div-1)
            
recursive(1,sum,calc[0],calc[1],calc[2],calc[3])
print(maxx)
print(minn)

 

값들은 받아서 value에 넣어주고 연산자는 calc에 넣어준다. 그리고 sum에 value[0]을 미리 넣어주고 index 1부터 재귀를 실행해준다.

 

연산자는 0보다 크다면 사용할 수있고 사용해주면 -1을 해준다.

 

나눗셈은 문제에서 정수 나눗셈으로 몫만 취하고 음수를 나눌경우에는 양수로 바꿔준다음에 몫을 음수로 바꿔줘서 계산해주라고 되어있다.

 

index가 n이랑 같으면 모든 값들 사이에 연산자를 넣어준 경우이다.

가장 큰값은 maxx에 저장해주고 가장 작은값은 minn에 저장해주면 된다.

반응형
저작자표시 (새창열림)

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 1922번, 네트워크 연결 (Python)  (0) 2021.08.18
[백준] 1916번, 최소비용 구하기 (Python)  (0) 2021.08.18
[백준] 16236번, 아기상어 (Python)  (0) 2021.08.16
[백준] 1759번, 암호 만들기 (Python)  (0) 2021.08.13
[백준] 3190번, 뱀 (Python)  (0) 2021.08.12
'알고리즘/백준' 카테고리의 다른 글
  • [백준] 1922번, 네트워크 연결 (Python)
  • [백준] 1916번, 최소비용 구하기 (Python)
  • [백준] 16236번, 아기상어 (Python)
  • [백준] 1759번, 암호 만들기 (Python)
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196)
      • study (1)
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
        • 인프런 (1)
      • Live Study (15)
      • Programming (14)
        • Java (8)
        • Python (1)
        • Springboot (5)
        • MSA (0)
      • 알고리즘 (117)
        • 백준 (58)
        • 프로그래머스 (59)
      • 에러로그 (5)
      • 항해99 (23)
      • 면접 (1)
      • 프로젝트 (1)
      • CS (19)
        • 네트워크 (2)
        • 운영체제 (2)
        • 데이터베이스 (2)
        • 컴퓨터구조 (1)
        • Java (8)
        • Spring (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    실전프로젝트
    정리
    에러
    SFlash
    인프런
    김영한
    그리디
    해결
    조합
    spring
    SpringBoot
    코딩테스트
    항해마켓
    스파르타코딩클럽
    백준
    괄호
    프로그래머스
    카카오코딩테스트
    파이썬
    java
    카카오인턴
    버그
    미니프로젝트
    jpa
    항해99
    회고
    orm
    후기
    알고리즘
    브루트포스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[백준] 14888번, 연산자 끼워넣기 (Python)
상단으로

티스토리툴바