1. 1010번: 다리놓기

-문제: https://www.acmicpc.net/problem/1010

 

1010번: 다리 놓기

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다.

www.acmicpc.net

어렵게 생각했는데 알고보니 조합 문제였던; 수학적으로 생각해보는 것도 해보고, 단순하게 생각할 수 있으면 최대한 그렇게 해보자

 

-정답풀이: 

  • 조합 구하는 식 알아두기 

 

2. 11052번: 카드 구매하기

-문제: https://www.acmicpc.net/problem/11052

 

11052번: 카드 구매하기

첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000)

www.acmicpc.net

문제는 이해했으나 구현이 어려웠음.

 

-정답풀이: 

n=int(input())
d=[0]*(n+1)
p=[0]+list(map(int,input().split()))
d[1]=p[1]
for i in range(2,n+1):
    for j in range(1,i+1):
        if d[i]<d[i-j]+p[j]:
            d[i]=d[i-j]+p[j]
print(d[n])

다른 블로그 참조해서 이해한 결과 

d[i]에서 i는 구매하는 카드의 개수이고 다음과 같은 규칙을 가진다.

d[1]=p[1] (카드를 하나 구매하면 당연히 카드 한개의 가격의 가짓수이다)

d[2]=d[0]+p[2], d[1]+p[1](1개카드 두개 구매하는거)

d[3]=d[0]+p[3], d[1]+p[2], d[2]+p[1]

d[4]=d[0]+p[4], d[1]+p[3],d[2]+p[2],d[3]+p[1]

 

3. 1904번: 01타일 

-문제: https://www.acmicpc.net/problem/1904

 

1904번: 01타일

지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이

www.acmicpc.net

피보나치 수열로 쉬운 문제였다

 

-정답풀이: 

-틀린 풀이: 

  • 리스트 다 구하고 15746으로 나누니 메모리 초과 발생. append할 때 나누어서 넣어야한다
  • 그리고 1자리 수에 00은 불가능하지만, 1은 가능하므로 1의 값을 가진다(초기값 설정하는데 생각 더하자)

 

+ Recent posts