본문 바로가기

전체 글

(171)
[BOJ] [Python] 2193번 : 이친수 문제의 조건을 살펴보자. 1. 0으로 시작하지 않는다. 2. 1이 두 번 연속으로 나타나지 않는다. 이를 간단하게 나타내보자. 1. 1로 시작한다. 2. 1뒤에는 0이 온다. 3. 0뒤에는 1또는 0이 온다. 코드를 작성하기 전, 예시를 몇 개 작성해보자 위 예시를 표로 나타내면 아래와 같다. 처음에 찾은 규칙이랑 같이 고려해보면 점화식을 찾을 수 있다. n의 0의 개수 : 0개 ( n = 1 ) n의 1의 개수 : 1개 ( n = 1 ) n의 0의 개수 : n -1의 0의 개수 + n - 1의 1의 개수 ( n > 1 ) n의 1개 개수 : n - 1의 0의 개수 ( n > 1 ) num = int(input()) zero = 0 one = 1 for _ in range(num - 1): tmp = z..
[BOJ] [Python] 2156번 : 포도주 시식 3잔 연속 마실 수 없다는 조건을 고려하여 점화식을 세워야 한다. 조건을 고려하면, 4번째 잔부터 점화식이 적용된다. 따라서 1~3번째 잔까지는 적절히 초깃값을 넣어준다. 점화식을 살펴보자. 현재 마셔야 하는 컵 기준, 최고의 선택을 해야 한다. 3잔 연속으로 안 마시기 위한 선택권은 2개이다. 1. 3번째 앞의 컵 DP + 1번째 앞의 컵 값 + 현재 컵 2. 2번째 앞의 컵 DP "틀렸습니다" 아래 코드는 틀린 코드이다. 완벽하다고 생각했는데, 틀렸다. 왜 틀렸을까? num = int(input()) li = [] for _ in range(num): li.append(int(input())) dp = [0] * num for i in range(0, num): if i == 0: dp[0] = li..
[BOJ] [Python] 11726번 : 2xn 타일링 타일링해야 하는 직사각형은 2 x N으로 고정이기 때문에, 1 x 2 직사각형 2개를 1개로 보고 풀었다. 2 x 1 타일로만 이루어지는 경우는 나중에 + 1 을 해주는 방식으로 처리했다. 찾은 규칙 N의 짝 홀수 상관없이 앞에 방법(순서를 바꿨을 때 1 x 2 과 2 x 1의 개수가 같으면, 같은 방법이라 생각한다.)에 2 x 1 타일을 1개 붙여서 가져간 다음, 순서를 고려한 것이 총 경우의 수[답에서 요구하는 방법의 수]가 된다. 거기에 짝수일 경우에는 1 x 2 직사각형을 이용한 방법 1개를 추가한다. 코드로 나타내기 한 방법에 1 x 2 와 2 x 1이 몇 개가 쓰였는지 개수만 센다. 그리고 다음 순서에 그 전 순서의 방법들에 사용됐던 2 x 1 타일 수에 1을 더해주는 것이다. 짝수일 경우에는..