@Eeap
velog
@Eeap
전체 방문자
오늘
어제
  • 전체 (168)
    • osam (1)
    • Cloud (21)
      • Docker (2)
      • AWS (13)
    • AI & Data (7)
    • Algorithm (76)
      • Baekjoon (75)
      • Codeforces (1)
    • Language (18)
      • Java (18)
    • Back-end (17)
      • Spring (3)
      • JSP & Servlet (12)
      • Go (2)
    • 일상 (4)
    • 기타 (8)
    • git (1)
    • Infra (9)
      • Apache Kafka (5)
      • Kubernetes (4)
      • 기타 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • AWS CodeCatalyst
  • 인터페이스
  • 티스토리챌린지
  • bedrock
  • AWS CodeArtifact
  • sagemaker unified studio
  • bedrock agent
  • invokemodel api
  • java
  • AWS CodeStar
  • 오블완
  • Python
  • Agent
  • flink
  • SageMaker
  • bedrock api
  • knowledge bases
  • CLASS
  • converse api
  • 심폴릭링크

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
@Eeap

velog

Algorithm/Baekjoon

2293번 파이썬

2022. 4. 9. 22:18
반응형

이 문제는 저번에 풀었던 동전2 문제랑 비슷한 유형인데 이번에는 동전의 개수가 아닌 경우의 수를 구하는 문제이다.

또한, 경우의 수 중에 중복되는게 있으면 안된다는 조건 때문에 생각을 좀 오래했다.

이 문제는 ary 반복을 돌린다음 1~k까지 반복을 돌렸는데 그 이유는 두 위치를 바꿔서 돌리게 되면 중복되는 경우의 수가 포함되기 때문이다.

그래서 아래 코드처럼 ary 다음에 1~k까지 반복을 했다.

이렇게 하면 예제처럼 1,2,5일 경우 모든 p에 1로만 이루어져있는 경우가 들어가고 그 다음에 2가 포함되는 경우가 들어가게 된다. 그 다음도 마찬가지로 5가 포함되는 경우가 들어가게 된다. 이렇게 되면 경우의 수는 반복되지 않게 된다!

ex)

1 / 1,1  / 1,1,1 / 1,1,1,1  / 1,1,1,1,1

x  /  2  / 1,2  /  1,1,2 2,2 / ...

이런 식으로 반복된다!  

**p[0]를 1로 초기화한 이유는 ary에 있는 동전 하나로만 만들때 1이 되기 때문이다..!

import sys
input = sys.stdin.readline
n,k = map(int,input().split())
ary = [int(input()) for _ in range(n)]
p = [0 for _ in range(k+1)]
p[0]=1
for i in ary:
  for num in range(1,k+1):
    if num-i >= 0:
      p[num]+=p[num-i]
print(p[k])
반응형
저작자표시 (새창열림)

'Algorithm > Baekjoon' 카테고리의 다른 글

16194번 파이썬  (0) 2022.04.09
4948번 파이썬  (0) 2022.04.09
9461번 파이썬  (0) 2022.04.09
2294번 파이썬  (0) 2022.04.09
9465번 파이썬  (0) 2022.04.07
    'Algorithm/Baekjoon' 카테고리의 다른 글
    • 16194번 파이썬
    • 4948번 파이썬
    • 9461번 파이썬
    • 2294번 파이썬
    @Eeap
    @Eeap

    티스토리툴바