분류 전체보기275 10844번 쉬운 계단 수 동적 계획법(Dynamic Programming)을 사용해서 문제를 해결해 보자. 길이가 n이고 마지막 숫자가 0에서 9까지 각각인 계단 수의 개수를 dp[n][last]라고 할 때, (dp[1][0] = 0) (길이가 1이고 마지막 숫자가 0인 계단 수는 없다.) (dp[1][i] = 1) (1 2024. 3. 3. DCS 초보 2024. 3. 2. 나의 방학 2024. 3. 2. 가장 가까운 두 점 def closest_pair(points): def sq_dist(p1, p2): return (p1[0] - p2[0])**2 + (p1[1] - p2[1])**2 def closest_band(mid_band, d): min_d = d mid_band.sort(key=lambda x: x[1]) # y좌표정렬 for i in range(len(mid_band)): for j in range(i+1, len(mid_band)): if (mid_band[j][1] - mid_band[i][1])**2 < min_d: dist = sq_dist(mid_band[i], mid_band[j]) if dist < min_d: min_d = dist else: break return min_d def close.. 2024. 3. 2. 가장 긴 바이토닉 부분 수열 이번에는 글을 쓰면서 풀어 보자 . 이 문제는 최장 증가 수열 문제를 응용한 문제다. 그런데 최장 증가 수열 문제의 내 코드를 보아도 이해가 바로 안 가서 다시 공부했다. 먼저 LIS라고도 하는 최장 증가 수열 A에 대해 A[i]가 i번째 원소라고 하면 dp는 다음과 같이 정의할 수 있다. dp[i] = i번째 원소를 포함하는 가장 긴 증가하는 수열 증가하는 수열이 i번째 수를 포함하려면 포함시키려는 기존 수열의 마지막 원소가 i번째 수보다 작아야 한다. 만약, i번째 수를 포함시킬 수 있다면( 기존 수열의 마지막 원소가 i번째 수보다 작다면) 기존 수열의 길이에 + 1을 하면 된다. 그러니까 dp[i]를 정할 때, for i in range(n): for j in range(i): if a[i] > a.. 2024. 3. 2. 젯슨 나노 USB SSD 부팅 2024. 2. 29. 네 개의 다른 우분투 서버 카다스, 라즈베리파이4 젯슨 나노, amdPC 카다스는 정말 빠릿해요. 2024. 2. 28. 1932번 정수 삼각형 n = int(input()) delta = [list(map(int, input().split())) for _ in range(n)] dp = [[0]*x for x in range(1,n+1)] print(n) print(delta) print(dp) if n == 1: print(delta[0][0]) else: dp[0][0] = delta[0][0] for i in range(n): for j in range(i+1): print(i,j,len(dp[i-1])) if 0==j: dp[i][j] = dp[i-1][j] + delta[i][j] elif len(dp[i-1])==j: dp[i][j] = dp[i-1][j-1] + delta[i][j] else: dp[i][j] = max(dp[i-.. 2024. 2. 28. 1463번 1로 만들기 def counter(n): dp = [0] * (n + 1) for i in range(2, n + 1): dp[i] = dp[i - 1] + 1 if i % 2 == 0: dp[i] = min(dp[i], dp[i // 2] + 1) # 3으로 나누어 떨어지는 경우 if i % 3 == 0: dp[i] = min(dp[i], dp[i // 3] + 1) return dp[n] n = int(input()) print(counter(n)) 숫자 i를 1로 만들 수 있는 최소 계산 횟수를 dp[i] 라고 정의하면, 기본적으로 +1연산에 의해 1개씩 증가하고, 2로 나누어떨어지는 i의 경우 2분의 1 위치의 dp에 1을 더한 방법과 이전 수에 1을 더한 방법 중 최소 횟수를 저장한다. 3로 나누어떨어지는 .. 2024. 2. 28. DIY 2015년 마스터 건반용 책상 제작(완성까지) 드디어 책상 만들기다. 만드는 순서는 아주 간략하게 다음과 같다. 상판 위에 올라갈 구조물 만들기 상판 사포질하고 라운딩하고 오일 도포하고 폴리싱하는 긴 과정 상판을 지지할 서랍(기둥역할) 만들기 서랍 기둥 사이에 들어갈 마스터 건반 서랍 만들기 상판 고정 장치 만들기 집에 옮겨 조립하기. 처음에는 학교 창고에서 하다가 학교 운전원 선생님께서 축사 창고를 빌려 주셔서 눈치 보지 않고 밤늦도록 마음 놓고 작업할 수 있었고 그래서 비교적 짧은 시간 내에 끝낸 것 같다! 스프러스 각재로 모니터 받침대를 만들고 있는 모습이다. 이 받침대는 조명 역할도 하고 필요에 따라 좌우의 수납장에 레고처럼 빼거나 끼우거나 한칸 앞 뒤로 옮길 수 있게 하기 위해 이런 모양이다. 상부 구조물에 있는 각재 사이에 모니터 받침을 .. 2024. 2. 27. DIY 2015년 마스터 건반용 책상 제작(제작 준비-작업대) 책상 작업을 하기 위해서는 작업대가 필요했다. 예전 원룸에서 쓰던mdf판을 재활용할 겸해서 먼저 작은 책상 프레임을 만들고, 책상을 만든 뒤, 프레임에 상판을 올려서 작은 책상을 만들기로 했다. 스프러스 각재를 주문해서 표시를 해 주었다. 직각을 맞추며 작업을 해 주었다. 그리고 목심 플러그도 박아주고 자르면 이렇게 작업대가 완성되었다. 여기서 상판 광택도 내고많은 것을 하게 된다. 2024. 2. 27. Raspberry Pi 5 8G 2024. 2. 27. 이전 1 ··· 14 15 16 17 18 19 20 ··· 23 다음