Baekjoon/백트래킹

[백준] 14888 연산자 끼워넣기 (실버1) / 백트래킹

2023. 5. 25. 10:02

문제요약

나의 코드 및 설명

def dfs(count, result):
    if count == len(num_list)-1:
        ans.append(result)
        return

    for i in range(len(op)): #연산을 하나하나 방문하여 돌린다.
        if op[i] != 0: #연산자를 사용할 수 있다면,
            op[i] -= 1 #방문한 연산자의 사용 가능 횟수를 1만큼 줄인다.
            if i == 0:
                dfs(count+1, result + num_list[count+1])
            elif i == 1:
                dfs(count+1, result - num_list[count+1])
            elif i == 2: 
                dfs(count+1, result * num_list[count+1])
            elif i == 3:
                if result < 0: #앞의 값이 음수라면, 문제의 조건에 맞게 양수로 바꿔서 연산 후 음수로 바꿔주기
                    dfs(count+1, -(abs(result) // num_list[count+1]))
                else:
                    dfs(count+1, result // num_list[count+1])
            op[i] += 1 #돌아와서는 방문한 연산자의 사용 가능 횟수를 돌려놓는다.
    

n = int(input())
num_list = list(map(int, input().split()))
op = list(map(int, input().split())) #덧셈, 뺄셈, 곱셈, 나눗셈

ans = []

dfs(0, num_list[0])

print(max(ans))
print(min(ans))

피드백

백트래킹 문제이고 어렵지 않게 풀었다. 백트래킹 문제 연습을 그동안 많이 해서 그런지, 방문체크나 종료조건이 복잡하지 않다면 이런 문제는 어렵지 않게 푸는 것이 가능한 것 같다. 앞으로는 방문체크나 종료조건이 복잡한 문제 위주로 찾아서 연습해야겠다.

'Baekjoon > 백트래킹' 카테고리의 다른 글

[백준] 16943 숫자 재배치 (실버1) / 백트래킹  (0) 2023.05.06
[백준] 1189 컴백홈 (실버1) / 백트래킹  (0) 2023.05.05
[백준] 2992 크면서 작은 수 (실버3) / 문자열, 백트래킹  (0) 2023.04.27
[백준] 1476 날짜 계산 (실버5) / 백트래킹  (0) 2023.04.27
[백준] 2529 부등호 (실버1) / 백트래킹  (0) 2023.04.27
'Baekjoon/백트래킹' 카테고리의 다른 글
  • [백준] 16943 숫자 재배치 (실버1) / 백트래킹
  • [백준] 1189 컴백홈 (실버1) / 백트래킹
  • [백준] 2992 크면서 작은 수 (실버3) / 문자열, 백트래킹
  • [백준] 1476 날짜 계산 (실버5) / 백트래킹
hellosonic
hellosonic
꾸준함hellosonic 님의 블로그입니다.
hellosonic
꾸준함
hellosonic
전체
오늘
어제
  • 분류 전체보기 (285)
    • SSAFY (4)
    • 프로그래머스 데브코스 (26)
    • Diary (1)
    • JavaScript (20)
    • ToyPJ (13)
      • Python-Django (13)
    • CS지식 (11)
      • 자료구조 (5)
      • 개발 상식 (2)
      • 네트워크 (4)
    • Baekjoon (141)
      • IM Level (57)
      • DFS와 BFS (21)
      • 백트래킹 (21)
      • DP (3)
      • 이분탐색 (4)
      • 구현 (14)
    • Programmers (13)
      • Lv1 (4)
      • Lv2 (9)
    • SWEA (SW Expert Academy) (52)
      • D1 (5)
      • D2 (7)
      • D3 (40)
    • 이코테 (4)
    • Grammar (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기
  • 관리자

공지사항

인기 글

태그

  • SWEA D2
  • 백준
  • 백준 5212
  • 프로그래머스 데브코스
  • 구현
  • 자바스크립트
  • 백준 18870
  • 백준 2999
  • SWEA/D3
  • 파이썬 2529
  • 프로그래머스
  • 파이썬 1436
  • 파이썬 1946
  • 자바스크립트 기본기
  • SWEA 파이썬
  • 그리디
  • 파이썬 11478
  • 코딩부트캠프
  • SWEA D3
  • javascript ux
  • 백준 14891
  • 리액트 todolist
  • 파이썬
  • SWEA
  • 프론트엔드 데브코스
  • 파이썬 1269
  • 백준 1157
  • 국비지원교육
  • 이코테
  • JS

최근 댓글

최근 글

hELLO · Designed By 정상우.
hellosonic
[백준] 14888 연산자 끼워넣기 (실버1) / 백트래킹
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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