문제 백준 2193.이친수 Silver III python 문제링크 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 나의 코드 이 문제는 각 N의 길이 별로 생성되는 모든 이친수의 경우의 수를 직접 나열해보면 된다. 나열 결과, N = 3: 2개, N = 4: 3개, N = 5: 5개, N = 6, 8개, N = 7: 13개 .... 이렇듯 피보나치 수열이 완성된다. 단, N이 하나씩 밀려서 나타나니 N - 1에 대한 피보나치 수열을 만들어주면 된다. N = int(input()) dp = [1, ..
문제 백준 1904 01타일 Silver III python 문제링크 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net 나의 코드 한 문제에서 메모리초과 시간초과가 모두 나본 것은 또 처음인 것 같다.. 이 문제는 패턴만 찾으면 쉽게 풀 수 있다. N = 1 -> 1 N = 2 -> 00 N = 3 -> 001, 100, 111 N = 4 -> 0011, 0000, 1001, 1100, 1111 N = 5 -> 00111, 00001, 00100, 10011, 10000, 11001, 11100, 11111 . . ..
문제 백준 1003 피보나치 함수 Silver III python 문제링크 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 나의 코드 원래 피보나치 문제를 풀듯이 재귀적으로 풀었는데 역시나 시간 초과 에러가 났다. 여러번 반복되는 코드의 실행에서 바뀌지 않는 값들이 존재하기 때문에 매번 같은 연산을 반복할 필요가 없다. 따라서 이 문제는 동적계획법과 메모이제이션을 사용해서 풀어야한다. 메모이제이션이란, 자꾸만 반복되지만 그 결과값은 변하지 않는 작은 문제들의 결과값을 저장하는 것을 의미한다. 이 두가지 개념은 새로운 포스트에서 더 자세하게 다뤄보겠다. # N이 0, 1 일때의 0과 1의 출현 빈도수 cnt..