전체 글

말보다는 실천하는 사람
SELECT A.ID, A.GENOTYPE, B.GENOTYPE AS PARENT_GENOTYPEFROM ECOLI_DATA ALEFT JOIN ECOLI_DATA B ON A.PARENT_ID = B.IDWHERE A.GENOTYPE & B.GENOTYPE = B.GENOTYPEORDER BY A.ID# 데이터 확인용# SELECT# A.ID,# CONV(A.GENOTYPE, 10, 2) AS 'GENOTYPE',# CONV(B.GENOTYPE, 10, 2) AS 'PARENT_GENOTYPE',# CONV(A.GENOTYPE & B.GENOTYPE, 10, 2) AS '일치하는 부분'# FROM# ECOLI_DATA A# LEFT JOIN# ..
😉 아이디어1. _!우측 하단 마름모를 차지할 경우 or 그렇지 않은 경우!_를 구분2. 각 경우의 수에 맞게 배열에 값 저장😉 풀이def solution(n, tops): a = [0] * (n + 1) b = [0] * (n + 1) if (tops[0]): a[1] = 1 b[1] = 3 else: a[1] = 1 b[1] = 2 MOD = 10_007 for i in range(2, n + 1): a[i] = (a[i - 1] + b[i - 1]) % MOD if (tops[i - 1]): b[i] = (a[i - 1] * 2 + b[i - 1] ..
😉 아이디어1. 특이케이스 생성에 집중 👉 _!n > 2 이상부터는 특이케이스 없음!_ 2. _!n = 1 or 2!_의 특이케이스로 점화식 생성😉 풀이def solution(n): answer = 0 # n = 1 -> 1 (1) # n = 2 -> 2 (1) # n = 3 -> 3 (0) # n = 4 -> f(3) * 1 + f(2) * 1 + f(1) * 0 # n = 5 -> f(4) * 1 + f(3) * 1 + f(2) * 0 + f(1) * 0 # 패턴: [0, 1, 1, 0, 0, ...] dp = [0, 1, 2, 3] pattern = [0, 1, 1, 0, 1, 0] isZero = True for i in range(4, n + 6): val = (dp[i - 1] + dp[i -..
😉 아이디어_!이전 차량의 종료위치 _!end!_ 기준으로 정렬하면 _!end!_ 이전에 모든 경로를 통틀어 1개의 카메라로 취급가능😉 풀이def solution(routes): answer = 0 routes.sort(key = lambda x : (x[1])) print('routes', routes) prev = [-30_001, -30_001] for route in routes: start, end = route # prev 내에서 단 1개만 필요 -> 범위가 벗어날 경우만 카메라 추가 if prev[1] ✔ 링크 : https://school.programmers.co.kr/learn/courses/30/..
😉 아이디어1. _!n!_이 홀수일 때는 생성불가 _!return 0!_ 짝수만 고려2. _!n = 2인 경우 신규 패턴 3개 생성!_, _!n = 4인 경우 이후 2개씩 생성!_3. _!f(10) = f(8) * 3 + f(6) * 2 + f(4) + f(2) * 2 + 2!_😉 풀이def solution(n): answer = 0 if n == 1 : return 0 MOD = 1_000_000_007 arr = [0] * (n + 10) arr[2] = 3 arr[4] = 11 for i in range(6, n + 10): if i % 2 == 1: continue ..
😉 아이디어1. _!skill_trees!_를 순회하며 _!스킬트리 변수 skill!_에 영향여부 확인2.영향을 받는다면 _!스킬트리 변수 skill!_에서 _!popleft()!_실행😉 풀이from collections import dequedef solution(skill, skill_trees): answer = 0 for tree in skill_trees: memo = deque(list(skill).copy()) skills = list(tree) isValid = True for s in skills: if s in memo: if memo[0] == s: ..
😉 아이디어1. _!n이 7미만일 경우!_까지 각 특수한 조합 개수 확인 👉 _![1, 2, 5, 2, 2, 4]!_반복됨2. 3의 배수로 반복되고 있으므로_!f(n + 3) - f(n)!_를 통해 _!f(n)!_의 점화식 계산😉 풀이 def solution(n): dp = [0] * (n + 10) dp[1] = 1 dp[2] = 3 dp[3] = 10 MOD = 1_000_000_007 # n이 6 이하인 경우 저장 for i in range(4, n + 1): if i == 4: dp[i] = dp[i - 1] + dp[i - 2] * 2 + dp[i - 3] * 5 + 2 elif i == 5: ..
😉 아이디어1. _!어피치를 이겨야하는 경우!_or _!져야하는 경우!_로 구분 경우의 수 배열 저장2. 각 경우를 순회하며 화살의 개수를 고려, _!나의 점수!_및 _!어피치의 점수!_ 계산3. 문제 내의 다양한 예외조건 분기처리😉 풀이combinations = []def solution(n, info): answer = [] # true, false 조합 for i in range(0, 12): combination([0] * 11, 0, 0, i) max_gap = -1 max_case = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for co in combinations: arrows = n ..
thisisdj
codenextdoor