문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 문제 풀이 처음에는 괄호의 수에서 사용한 카탈란의 수 로 푸는 줄 알았다. 근데 이것도 앞의 경우의 수 몇개 풀어보니까 피보나치가 성립되었다. 그리고 계속해서 10007을 모듈 연산하는 것도 잊지 않아야 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include #define SZ 1001 int ans_square[SZ]; void..
문제 다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다. int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); } } fibonacci(3)을 호출하면 다음과 같은 일이 일어난다. fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출한다. fibonacci(2)는 fibonacci(1) (두 번째 호출)과 fibonacci(0)을 호출한다. 두 번째 호출한 fibonacci(1)은 1을 출력하고 1을 리턴한다. fibonacci(0)은 ..
문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 마지막 도착 계단은 반드시 밟아야 한다. 따라서 첫 번째 계단을 ..
문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include #define SZ 12 int T, n..
문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 1. 처음에는 백트래킹 문제인 줄 알고 아래처럼 백트래킹으로 풀었다. 근데 이렇게 하면 숫자가 조금만 커져도 시간 복잡도가 엄청 커진다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 void solutio..
1. 최대공약수 구하는 방법 큰 수 : a , 작은 수 : b a가 b로 나누어 떨어진다면 최대 공약수는 b 그렇지 않다면 a와 b의 최대 공약수는 b 와 (a를 b로 나눴을 때의 나머지)의 최대 공약수와 같다. 큰 수 b , 작은 수 R로 진행하여 두 수가 나누어 떨어질 때까지 while문을 반복한다. 2. 최소 공배수 구하는 방법 1에서 구한 최대공약수 GCD * ( a / GCD ) * ( b / GCD ) 값이 된다. 3. 최소 공배수 값을 저장할 lcm_arr를 선언하고 lcm_arr[0] = 1 설정해준다. 아래와 같이 입력 배열 arr 을 차례로 비교하면서 최소 공배수 값을 갱신한다. arr[0] 2 , lcm_arr[0] 1 => lcm_arr[1] 2 arr[1] 6 , lcm_arr[1..
1. 소수 판별은 몇 번 풀어본 문제여서 수월했다. 2. isitsosu 함수에서 num/2 까지만 for문을 돌려도 되는 것이 포인트 3. 이 방법 말고도 1부터 1000까지의 배열을 만들고 해당 값이 소수이면 1, 아니면 0 으로 해서 배열로 판별하는 방법도 어디서 배웠는데 까먹었다. 그게 2의 배수, 3의 배수 없애고 그 것의 배수 또 없애고 그러느거 같은데 다음에 해봐야지 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #include #include #include int isitsosu(int num){ for(int i=2; i
알고리즘 시간에 배웠던 것을 생각하며 풀었다. 모르는 부분은 다시 교수님 온라인 강의보고 이해했다. 근데 다 거의 0.nn ms 로 소요되는데 왜 테스트 9, 10, 11은 저러는지 모르겠다. 내 코드가 이상한건지 아님 저 케이스는 퀸 개수가 12개여서 그런건강.... https://swprog.tistory.com/entry/Backtracking-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-Eight-Queens-Problem-Part-1?category=610940 Backtracking 알고리즘: Eight Queens Problem Part 1 Eight Queens Problem Part 1 swprog.tistory.com 1 2 3 4 5 6 7 8 9 10 11 12..
- Total
- Today
- Yesterday
- 장고 태그달기
- ModelForm Form 차이
- django 태그
- iOS 데이터베이스
- 장고 게시판
- 실시간 데이터베이스
- 테이블출력안됨
- Firebase 데이터베이스 추천
- 웹 배포
- django 게시판
- iOS 검은 화면
- 알파벳 카운팅
- Django
- CellForRowAt 호출안됨
- django clean
- iOS 화면 안나옴
- pythonanywhere배포방법
- Realtime Database
- django tag
- CellForRowAt Not Called
- iOS UITableView 출력안됨
- pythonanywhere배포
- django pythoneverywhere
- 까만 화면
- 데이터베이스 추천
- python 웹 배포
- django 로그인접근
- cleaned_data
- UITableViewController Not Working
- django 개발일지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |