본문 바로가기

알고리즘 풀기15

BOJ 15990 1, 2, 3 더하기 5 www.acmicpc.net/problem/15990 15990번: 1, 2, 3 더하기 5 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 코드 from sys import stdin input = stdin.readline MOD = 1000000009 T = int(input()) dp = [[0, 0, 0] for _ in range(100001)] dp[1] = [1, 0, 0] dp[2] = [0, 1, 0] dp[3] = [1, 1, 1] dp[4] = [2, 0, 1] for i in range(5, len(dp)): dp[i][0] = (dp[i-1][1] + dp[i-1][2]) %.. 2020. 10. 31.
BOJ 2133 타일 채우기 www.acmicpc.net/problem/2133 2133번: 타일 채우기 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. www.acmicpc.net 2xN 타일링 문제랑 똑같을 줄 알고 만만히 봤다가 죽을상 짓게 만든 문제다. 답안 코드 [Python3 코드] from sys import stdin input = stdin.readline def solution(N): # dp[n] : 3*n 인 타일을 채우는 경우의 수 # dp[n] = dp[n-2]*dp[2] + dp[n-4]*2 + dp[n-6]*2 + ... ## 2 곱하는 이유 : 예외 케이스 dp = [0 for _ in range(31)] dp[0] = 1 dp[2] = 3 for i in range(4.. 2020. 10. 28.
BOJ 1088 쉬운 계단 수 python3 문제 : https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 코드 from sys import stdin input = stdin.readline NANUGE = 1000000000 N = int(input()) # 격자 틀 만들기 dp = [[-1 for _ in range(10)] for _ in range(N+1)] dp[1] = [1 for _ in range(10)] # 격자 채우기 for i in range(2, N+1): for start_number in range(10): if start_number == 0: # 길이가 i, 0으로 시작하는 숫.. 2020. 4. 17.
BOJ 1149 RGB거리 python3 문제 : https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 같은 자연수이다. www.acmicpc.net 코드 from sys import stdin input = stdin.readline R, G, B = 0, 1, 2 N = int(input()) houses = [[-1, -1, -1] for _ in range(N)] # 각 집의 색깔 별 가격 입력 for i in range(N): houses[i] = list(map(int, input()... 2020. 4. 17.
[백준] 1759 암호 만들기 python3 문제 : https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 코드 import sys sys.setrecursionlimit(10**8) # 10^8 까지 늘림. input = sys.stdin.readline def is_correct_password(password): vowel = 0 consonant = 0 for p in password: if p in 'aeiou': vowel += 1 else: consonant += 1 if vowel >.. 2020. 3. 18.
[백준] 6603 로또 python3 문제 : https://www.acmicpc.net/problem/6603 6603번: 로또 문제 독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다. 로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는 것이다. 예를 들어, k=8, S={1,2,3,5,8,13,21,34}인 경우 이 집합 S에서 수를 고를 수 있는 경우의 수는 총 28가지이다. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2 www.acmicpc.net 코드 from sys import stdin input = stdin.readline def backtracking(idx, S, .. 2020. 3. 14.