목록분류 전체보기 (145)
공부 기록장
https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 코드 T = int(input()) dp = [0 for _ in range(11)] dp[1] = 1 dp[2] = 2 dp[3] = 4 for i in range(4, 11): dp[i] = dp[i-1] + dp[i-2] + dp[i-3] for _ in range(T): n = int(input()) print(dp[n]) 방법의 수를 n이 1일 때부터 차례대로 적어가면서 숫자들 사이의 규칙을 찾아 점화식을 구하려고 시도를 했다. N이 5인 경우에 대해서 경우의 수를 잘못 세고 내가 짐작..
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 코드 n = int(input()) d = [0] * (n + 1) # d[i]에 저장되는 값은 i를 1로 만드는 최소 연산 횟수 # 상향식 풀이 : 제일 작은 인덱스의 수부터 목표하는 값으로 향하는 것 for i in range(2, n + 1): # if 문을 하지 않아도 밑의 조건문에서 최소값으로 교체되기 때문에 어짜피 셋 다 시도하는 것과 같으 결과 d[i] = d[i - 1] + 1 if i % 3 == 0: d[i] = min(d[i], d[i // 3] + 1) if i % 2 == 0: d[i] ..
https://www.acmicpc.net/problem/2775 코드 t = int(input()) dp = [[0 for _ in range(15)] for _ in range(15)] # 0층 i호에는 i명 초기화 for i in range(1, 15): dp[0][i] = i # 각 층 1호 값 초기화 for i in range(1, 15): dp[i][1] = dp[i-1][1] for i in range(1, 15): for j in range(2, 15): dp[i][j] = dp[i][j-1] + dp[i-1][j] # 같은 층 전 호수 dp값에 다른 층 같은 호수의 dp를 더해준다 for _ in range(t): k = int(input()) n = int(input()) print(d..
https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 백트래킹 대표 문제라고 해서 풀어야지 생각만 하고 미루다가 이제야 풀고 공부했다 ... 이 개념에 대한 설명은 몇 십번은 읽은 거 같은데, 개념적으로는 이해하기 그렇게 어려운 개념은 아닌데, 막상 코드로 구현하려면, 코드 작성이 수월하게 안되는 개념이다 ㅠ ㅠ ㅠ . . . 백트래킹이란, 최적의 해를 찾는 과정에서, 유망하지 않은 후보 해에 대해 빠르게 포기하고 이전 단계로 되돌아가 다른 후보 해를 찾는 알고리즘..