ji_iin
iOSLog
ji_iin
전체 방문자
오늘
어제
  • 분류 전체보기 (56)
    • Swift (8)
    • iOS (6)
    • 알고리즘 (34)
    • CS (3)
    • 회고 (3)
    • 제품리뷰 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • swiftUI
  • 대기업코테
  • 프로그래머스
  • 수학
  • 브루트포스 알고리즘
  • 공식문서
  • 백트래킹
  • 재귀
  • 2022년 회고
  • django
  • SWiFT
  • 자바
  • 정렬
  • 알고리즘개념
  • 백준
  • 너비우선탐색
  • ios
  • 회고
  • 개발회고
  • Python
  • 알고리즘
  • 그래프탐색
  • 깊이우선탐색
  • 구조체와 클래스
  • 파이썬
  • 다이나믹 프로그래밍
  • 깊은복사와 얕은복사
  • Bye2023
  • opional
  • 그래프이론

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ji_iin
알고리즘

[Python] 백준 14888번 : 연산자 끼워넣기

[Python] 백준 14888번 : 연산자 끼워넣기
알고리즘

[Python] 백준 14888번 : 연산자 끼워넣기

2021. 9. 6. 14:27

문제

14888번: 연산자 끼워넣기

[ 문제 조건 ]

  • 입력
    1. N : 수의 개수
    2. A1 ~ An : 수들
    3. sum(N-1) : 합이 N-1인 4개의 정수, 연산자 4개의 각각 개수가 주어짐 (+,-,×,÷) 순으로
  • 출력
    • 만들 수 있는 식의 최대 & 최소 값 출력
    • -10억 ≤ 결과값 ≤ 10억

[ 해결순서 ]

  1. 백트래킹 유형은 dfs를 주로 사용하는 것 같아 dfs로 풀어보려고 했다.
  2. 모든 경우의 수를 전부 구해 최대 최소를 비교하는 문제여서 어쨌든 모두 비교해서 구해야한다.
    1. 처음 먼저 plus가 1이니까 dfs가 걸려 깊이우선탐색 후 나머지 연산까지 깊이우선탐색 해 값을 갱신
    2. 깊이우선탐색 plus 연산은 끝났고, 나머지 연산 중 multiply 값이 1이므로 해당 연산 기준으로 재귀적으로 dfs 진행 후
    3. 최대, 최소 갱신 후 최종 갱신된 값이 정답이 될 것이다.예제 2를 분석해서 구해봤다.

[ 점화식 ]

dfs(depth+1, result+values[depth], plus, minus, multiply, divide)

✏️한줄평

: 생각한 대로 코드 짜기는 어렵다ㅜㅜ


코드

n = int(input())
values = list(map(int,input().split()))
op = list(map(int,input().split()))
max_val = -1e9
min_val = 1e9
def dfs(depth, result, plus, minus, multiply, divide):
global max_val, min_val
if depth == n:
max_val = max(result, max_val)
min_val = min(result, min_val)
return
if plus:
dfs(depth+1, result+values[depth], plus-1, minus, multiply, divide)
if minus:
dfs(depth+1, result-values[depth], plus, minus-1, multiply, divide)
if multiply:
dfs(depth+1, result*values[depth], plus, minus, multiply-1, divide)
if divide:
if result < 0: #음수라면
dfs(depth+1, -(-(result)//values[depth]), plus, minus, multiply, divide-1)
else:
dfs(depth+1, result//values[depth] , plus, minus, multiply, divide-1)
dfs(1, values[0], op[0], op[1], op[2], op[3])
print(max_val)
print(min_val)
view raw BOJ14888.py hosted with ❤ by GitHub

'알고리즘' 카테고리의 다른 글

[Python] 카카오 2021 BLIND : 신규 아이디 추천  (0) 2021.09.13
[Python] 백준 5567번 : 결혼식  (1) 2021.09.06
[Python] 백준 1074번 : Z  (0) 2021.08.30
[Python] 백준 11051 : 이항 계수 2  (0) 2021.08.29
[Python] 백준 1309번 : 동물원  (0) 2021.08.27
  • 문제
  • [ 문제 조건 ]
  • [ 해결순서 ]
  • [ 점화식 ]
  • ✏️한줄평
  • 코드
'알고리즘' 카테고리의 다른 글
  • [Python] 카카오 2021 BLIND : 신규 아이디 추천
  • [Python] 백준 5567번 : 결혼식
  • [Python] 백준 1074번 : Z
  • [Python] 백준 11051 : 이항 계수 2
ji_iin
ji_iin
개발성장일지🐥

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.