[백준] 5557번 1학년 - python 파이썬

2024. 12. 17. 11:34·코딩테스트/백준

문제

 

 

 

 

처음 이 문제를 접했을 때는 dfs로 풀어주려고 했지만 범위를 자세히 보면 dfs로 구현할 시 시간초과가 발생한다는 것을 알 수 있다.

 

그래서 이를 해결하고자 DP를 사용해서 문제를 해결 해주었다.

 

2차원 배열의 dp를 통해서 i번째 인덱스에서 0~20 사이의 숫자중 가능한 경우의 수를 dp[i-1]에 저장된 수를 더해서 작성해주면 된다. 

 

 

 

 

 

따라서 i번째 인덱스에서 j라는 숫자를 만드는 경우의 수를 구해 나가는 방식으로 생각하면 된다

 

 

 

코드

n = int(input())
nums = list(map(int,input().split()))
dp = [[0]*21 for _ in range(n-1)]
dp[0][nums[0]] = 1

for i in range(1,n-1):
    for j in range(21):
        if j - nums[i] >= 0 : dp[i][j-nums[i]] += dp[i-1][j]
        if j + nums[i] <= 20 : dp[i][j+nums[i]] += dp[i-1][j]

print(dp[-1][nums[-1]])

'코딩테스트 > 백준' 카테고리의 다른 글

[백준]14502번 연구소 BFS - python  (1) 2025.01.06
[백준] 2212번 센서 - python파이썬  (0) 2024.12.18
[백준] 1038 감소하는 수 - python 파이썬  (0) 2024.12.10
[백준] 14179번 빗물 - python 파이썬  (1) 2024.11.27
[백준] 2166번 다각형의 면적 - python 파이썬  (2) 2024.11.27
'코딩테스트/백준' 카테고리의 다른 글
  • [백준]14502번 연구소 BFS - python
  • [백준] 2212번 센서 - python파이썬
  • [백준] 1038 감소하는 수 - python 파이썬
  • [백준] 14179번 빗물 - python 파이썬
hiwon
hiwon
천천히 굴러가는 코딩일기
  • hiwon
    하이원의 코딩 일기
    hiwon
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • 프론트엔드 (0)
        • react (0)
      • 백엔드 (13)
        • node.js (1)
        • spring (6)
      • 코딩테스트 (57)
        • 백준 (41)
        • 프로그래머스 (15)
      • 프로디지털아카데미 (9)
        • 클라우드 (1)
        • JavaScript (1)
      • github (1)
      • AWS (2)
      • Infra (1)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    그리디
    프로그래머스
    spring
    알고리즘
    알파코
    K디지털트레이닝
    bastion host
    BFS
    프로디지털아카데미
    코딩테스트
    백트래킹
    코테
    MSA
    깃허브
    투포인터
    python
    Java
    IT기획
    프디아
    신한투자증권
    UnionFind
    백엔드
    AWS
    github
    kdt교육
    다익스트라
    백준
    알파코캠퍼스
    파이썬
    EC2
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hiwon
[백준] 5557번 1학년 - python 파이썬
상단으로

티스토리툴바