[프로그래머스/Python] 체육복
·
알고리즘문제풀이
문제https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 풀이(정답)def solution(n, lost, reserve): answer = 0 dp = [1] * (n+2) dp[0], dp[-1] = -1, -1 for i in reserve: dp[i] += 1 for j in lost: dp[j] -= 1 # print(dp) for k in range(1, n+1): if (dp[k] == 2 and dp[k-..
[백준/Python] 9461번 파도반 수열
·
알고리즘문제풀이
문제https://www.acmicpc.net/problem/9461문제 이해(점화식 찾기)먼저 이 문제는 규칙을 찾아야 한다.n ans1 12 13 14 25 26 37 48 59 710 911 1212 16​ n이 1부터 10까지의 답은 문제에 주어져 있어서 규칙을 쓰고 살펴보기 시작했다.n이 10일 경우 답이 9인데 9=4+5라는 것이 딱 보인 후 다른 값들을 살펴보니 정규식을 찾을 수 있었다. dp[n] = dp[n-2] + dp[n-3]문제 풀이(정답)T = int(input())for _ in range(T):    n = int(input())    dp = [1] * (n+1)    for i in range(4, n+1):        dp[i] = dp[i-2] + dp[i-3]    ..
[백준/Python] 9095번 1, 2, 3 더하기
·
알고리즘문제풀이
문제https://www.acmicpc.net/problem/9095문제 이해규칙을 찾기 위해 정수 n을 1,2,3으로 나타내는 방법의 수를 구해보았다.처음에는 숫자 하나만 사용해도 되는지 몰라서 규칙을 찾는데 오래걸렸다.n ans 1 1 2 2 3 4 4 7 5 13 6 24 7 44 규칙은 앞 세개의답을 더하는 것이었다.점화식을 파악했으니 이제 문제를 풀 수 있다.문제 풀이(정답)T = int(input())for _ in range(T):    n = int(input())    dp = [0] * 11    dp[1] = 1    dp[2] = 2    dp[3] = 4    for i in range(4, n+1):        dp[i] = dp[i-1] + dp[i-2] + dp[i-3]..
[백준/Python] 11729번 2×n 타일링
·
알고리즘문제풀이
문제https://www.acmicpc.net/problem/11726문제 이해1x2 블럭을 채워넣는 경우의 수를 세는 문제이다.n이 1인 경우부터 차례대로 세어나가고 있었다. n이 5인 경우를 구하고 있을 때 나는 눈치를 챘다.이 문제는 피보나치 문제이구나!!n ans1 12 23 34 55 86 137 218 349 55문제 풀이(시간초과 : 피보나치 함수)# 시간초과 : 재귀n = int(input())def fibo(x):    if x == 1 or x == 2:        return x    else:        return fibo(x-1) + fibo(x-2)print(fibo(n)) 나는 피보나치 문제니까 피보나치 함수를 만들어서 풀면 되겠지? 라고 생각하고 풀었지만 시간초과가 되었..