[백준] 9184번 신나는 함수 실행 (Python)

2021. 3. 13. 09:53·알고리즘/백준
728x90
반응형

문제

 

www.acmicpc.net/problem/9184

 

9184번: 신나는 함수 실행

입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다.

www.acmicpc.net

 

코드

 

dp = [[[0 for _ in range(21)]for _ in range(21)]for _ in range(21)]

def w(a,b,c):
    
    if a <= 0 or b <= 0 or c <= 0:
        return 1
    elif a > 20 or b >20 or c > 20:
        return w(20,20,20)

    if dp[a][b][c] != 0:
        return dp[a][b][c]
    elif a < b and b < c:
        dp[a][b][c] = (w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c))
        return dp[a][b][c]
    else:
        dp[a][b][c] = (w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1))
        return dp[a][b][c]

while True:
    a,b,c = map(int,(input().split()))
    if a == -1 and b == -1 and c== -1:
        break
    print(f'w({a}, {b}, {c}) = {w(a,b,c)}')

 

코드설명

 

문제에 점화식이 쓰여져 있어서 그 점화식을 그대로 사용하면 된다.

dp[] 3중 리스트를 만들어서 값을 저장할 수 있게 해준다. 범위는 20이 넘어가게 되면 다 20으로 만들기 때문에 

인덱스 0~20 까지 쓸수 있도록 21로 잡는다.

 

dp[a][b][c] 가 처음 들어온 값인지 기존에 저장이 되어있는 값인지 확인해준다.

이 확인문이 위에 20보다 클경우 전부 20으로 바꿔주는 확인문 아래에 있어야 리스트 범위 초과 에러가 안난다.

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

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

[백준] 1149번 RGB거리 (Python)  (0) 2021.03.13
[백준] 9461번 파도반 수열 (Python)  (0) 2021.03.13
[백준] 1436번 영화감독 숌 (Python)  (0) 2021.03.12
[백준] 4948번 베르트랑 공준 (Python)  (0) 2021.03.12
[백준] 1011번 Fly me to the Alpha Centauri (Python)  (1) 2021.03.12
'알고리즘/백준' 카테고리의 다른 글
  • [백준] 1149번 RGB거리 (Python)
  • [백준] 9461번 파도반 수열 (Python)
  • [백준] 1436번 영화감독 숌 (Python)
  • [백준] 4948번 베르트랑 공준 (Python)
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196) N
      • study (1) N
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
        • 인프런 (1) N
      • 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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[백준] 9184번 신나는 함수 실행 (Python)
상단으로

티스토리툴바