developer-ellen
인간 디버거의 로그 찍기
developer-ellen
전체 방문자
오늘
어제
  • 분류 전체보기 (217)
    • 회고록 (0)
    • 취뽀 및 커리어 여정의 Stack (2)
      • SSAFY 7기 (2)
    • 프로그래밍공부 (24)
      • c++ (0)
      • JAVA (3)
      • Spring (5)
      • design pattern (3)
      • BackDB (1)
      • Servlet&JSP (3)
      • Vue (4)
      • JPA (4)
      • Infra (1)
      • Linux (0)
    • AI (3)
      • papers (3)
      • trend (0)
    • 프로젝트진행 (0)
      • 데이터베이스 (0)
      • 서버개발 (0)
      • 인공지능 (0)
      • 하루정리 (0)
    • 포트폴리오 (0)
    • 알고리즘 (158)
      • 알고리즘문풀 (155)
      • 알고리즘공부 (3)
    • 통계공부 (15)
      • 시계열분석 (15)
      • 회귀분석 (0)
    • CS (14)
      • 컴퓨터네트워크 (4)
      • 운영체제 (8)
      • 데이터베이스 (2)
    • 주저리주저리 (0)
      • 필사 (0)
    • 취업관련정보 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준파이썬풀이
  • c++디자인패턴
  • 삼성코테구현풀이
  • 데이터분석
  • 시계열분석
  • 통계학
  • Arima
  • 코테파이썬
  • 통계분석
  • SW역량테스트파이썬
  • 삼성코테준비
  • 삼성코테기출자바풀이
  • 삼성코테자바풀이
  • 삼성코테자바꿀팁
  • SW역량테스트파이썬풀이
  • 삼성코테파이썬풀이
  • c++ 빌더 패턴
  • 카카오코테java풀이
  • AR모형
  • ARIMA모형
  • 삼성코테자바준비
  • 시계열
  • 삼성코테기출
  • BOJ파이썬풀이
  • MA모형
  • 카카오코테
  • 삼성코테파이썬준비
  • 운영체제인터럽트
  • 삼성코테파이썬
  • 삼성코테구현문제추천

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
developer-ellen
알고리즘/알고리즘문풀

SW Expert Academy - 수영장 (python)

알고리즘/알고리즘문풀

SW Expert Academy - 수영장 (python)

2021. 10. 22. 19:19

❓ 문제 - SW Expert Academy - 수영장  python 풀이법

 

출처 

(https://swexpertacademy.com/main/solvingProblem/solvingProblem.do)

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

 

📝 문제해결법

1. 이 문제는 완전탐색(DFS)로 풀었다.

  • dfs를 돌려 1월달 부터 모든 경우의 수를 탐색한다.
  • 일단 이용금액의 최대 금액은 1년권이므로 최솟값을 갱신시킬 처음 값을 1년권의 금액으로 잡는다.
  • dfs를 계속 돌려 13월은 1년을 넘으므로 m-1월까지 이용했던 금액과 최솟값을 찾을 값을 비교해서 갱신한다.
  • m월부터 1일권, 한달권, 3개월권을 끊을 경우로 모두 탐색하여 계속 DFS를 돌린다.

2. 문제 풀면서 느낀점

  • 1년권을 고려할 필요가 없음. 그냥 최대값으로 잡으면 됨
  • 만약 이번달을 이용을 안해도 1일권, 한달권, 3개월권 모두 고려해서 탐색에 넣는다.

 

💻 소스코드

T = int(input())

def dfs(m, cash):
    global min_money
    if m >= 13:
        min_money = min(min_money, cash)
        return
    else:
        dfs(m+1, cash+money[0]*month[m])
        dfs(m+1, cash+money[1])
        dfs(m+3, cash+money[2])

for test_case in range(1, T+1):
    money = list(map(int, input().split()))
    month = [0] + list(map(int, input().split()))
    min_money = money[3]
    dfs(1, 0)

    print(f'#{test_case} {min_money}')

'알고리즘 > 알고리즘문풀' 카테고리의 다른 글

SW Expert Academy - 보호 필름 (python)  (0) 2021.10.23
SW Expert Academy - 디저트카페 (python)  (0) 2021.10.22
SW Expert Academy - 줄기세포배양 (python)  (0) 2021.10.22
BOJ - 마법사 상어와 비바라기 21610번 (python)  (0) 2021.10.21
BOJ - 상어 중학교 21609번 (python)  (0) 2021.10.21
  • ❓ 문제 - SW Expert Academy - 수영장  python 풀이법
  • 📝 문제해결법
  • 💻 소스코드
'알고리즘/알고리즘문풀' 카테고리의 다른 글
  • SW Expert Academy - 보호 필름 (python)
  • SW Expert Academy - 디저트카페 (python)
  • SW Expert Academy - 줄기세포배양 (python)
  • BOJ - 마법사 상어와 비바라기 21610번 (python)
developer-ellen
developer-ellen

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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