본문 바로가기

전체 글

(146)
[백준/16974/파이썬] 레벨 햄버거 - 재귀 소스코드 N,X = map(int,input().split()) bur = [1] * 51 pat = [1] * 51 for i in range(1, N+1): bur[i] = 2 * bur[i-1] + 3 pat[i] = 2 * pat[i-1] + 1 def eat(n, x): if n == 0: return x if x == 1: return 0 elif x
[백준/2003/파이썬] 수들의 합2 - brute force 소스코드 N,M = map(int,input().split()) A= list(map(int,input().split())) start=0 answer=0 end=0 while start 앞의 원소를 뺌)
[백준/1309/파이썬] 동물원 - DP 소스코드 n = int(input()) dp =[1,3,7] for i in range (2,100001): dp.append((dp[i]*2 + dp[i-1])%9901) print(dp[n]%9901) 알고리즘 점화식 (dp[i]*2 + dp[i-1])만 찾으면 쉽게 풀리는 문제였다. 다만 처음에 메모리초과 에러가 났는데 찾아보니 계산할때마다 9901의 나머지를 추가해줘야 했다. 나머지로 계산을 해도 전체 결과에서 나머지 계산을 한게 같게 되는걸 알게 되었다.
[백준/14889/파이썬] 스타트와 링크 소스코드 from itertools import combinations N = int(input()) startlink = [list(map(int, input().split())) for _ in range(N)] answer = int(1e9) num = [i for i in range(N)] team = list(combinations(num,N//2)) for start_player in team: start_total = 0 link_total = 0 link_player = list(set(num)-set(start_player)) for i,j in list(combinations(start_player,2)): start_total += startlink[i][j] start_total +..
[백준/11726/파이썬] 2×n 타일링 소스코드 n = int(input()) dp = [0]*(1001) dp[1] = 1 dp[2] = 2 for i in range (3,1001): dp[i] = dp[i-1]+dp[i-2] print(dp[n]%10007) 알고리즘 dp라는걸 알고 풀면 정말 쉬운 문제입니다. 2 - 2 3 - 3 4 - 5 5 - 8 6 - 13 7 - 21 8 - 34 9 - 55 이렇게 n번째 숫자를 구할때는 (n-1번째) + (n-2번째)를 해주면 됩니다. 이제 백준 실버 난이도는 손쉽게 풀 수 있을 것 같다는 자신감을 얻었습니다.
[백준/1182/파이썬] 부분수열의 합 소스코드 from itertools import combinations N,S = map(int,input().split()) seq = list(map(int,input().split())) result = [] cnt = 0 for i in range(len(seq)+1): result = result+list(combinations(seq,i)) del result[0] for i in result: if (sum(i)) == S: cnt += 1 print(cnt) 알고리즘 파이썬의 itertools에 있는 combinations를 이용하여 부분 순열을 구한다. 공집합은 제거한다 합이 S인 개수를 구한다. 기본적인 문제라 시시했다.
[백준/6064/파이썬] 카잉 달력 소스코드 T = int(input()) def sol(m,n,x,y): while x
[백준/3085/파이썬] 사탕게임 - 브루트포스 소스코드 n = int(input()) board = [] ans =0 for _ in range(n): candy = list(map(str,input())) board.append((candy)) def count_candy(board): #개수세는 함수 N = len(board) max_candy = 1 for i in range(N): cnt = 1 for j in range(1,N): if board[i][j] == board[i][j-1]: cnt += 1 else : cnt = 1 if max_candy