Skip to content

Commit 081bbf0

Browse files
committed
2 parents ef201cd + 042bacb commit 081bbf0

File tree

6 files changed

+113
-0
lines changed

6 files changed

+113
-0
lines changed

Hongjoo/lv1/명예의전당_1.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"""
2+
- 명예 전당 : k=3 인 queue : <-| |<-
3+
# 탐색
4+
1. 현재 score = score[i]
5+
2. 명예 전당 업데이트
6+
7+
if len(deque) >= k (꽉참)
8+
=> popleft() &insert
9+
3.발표 점수 = min(deque)
10+
"""
11+
from collections import deque
12+
def solution(k, score):
13+
answer = []
14+
top_k = []
15+
for i in range(len(score)) :
16+
if len(top_k) >= k : # 꽉참
17+
#업데이트 가능 여부 확인
18+
if score[i] > top_k[0] :
19+
del top_k[0] #pop
20+
top_k.append(score[i])
21+
# print(f"apdate {score[i]}=> { top_k}")
22+
23+
else : # 여유 남음
24+
top_k.append(score[i])
25+
26+
top_k = sorted(top_k) #오름차순
27+
answer.append(top_k[0])
28+
# print(f"{i} - {score[i]}: {top_k}=> {answer}")
29+
return answer

Hongjoo/lv2/히노이의탑.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"""
2+
- 작은 수가 위로 올라감
3+
조건
4+
1. 한번에 한개만 옮기기 가능
5+
2, 큰원판 은 아래 , 작은 원판은 위
6+
3. 기둥 3개
7+
# 재귀
8+
goal : 기둥 1 -> 기둥 3으로 옮기는 방법 최소 방법
9+
#flow
10+
1. (n-1)개 원판 start => 중앙 (재귀) 몰아 넣기
11+
2. n 번째 원판 : start -> target 이동
12+
3. (n-1) 개 원판 중앙 -> target (재귀) 몰아 넣기
13+
14+
15+
"""
16+
answer = []
17+
def hannoi(src ,target , inter , n) :
18+
if n== 1 :
19+
answer.append([src, target])
20+
else :
21+
hannoi(src , inter , target , n-1)
22+
hannoi(src, target , inter , 1)
23+
hannoi(inter, target, src , n-1)
24+
25+
def solution(n):
26+
27+
hannoi(1 ,3 , 2 , n)
28+
29+
return answer
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import sys
2+
input = sys.stdin.readline
3+
4+
N = int(input()) # 병사 수
5+
soldiers = list(map(int, input().split())) # 병사의 전투력 리스트
6+
dp = [1 for _ in range(N)] # 모든 병사는 자기 혼자일 때 길이가 1인 수열을 가질 수 있으므로, DP의 초기값을 1로 설정
7+
8+
soldiers.reverse() # 병사들의 전투력을 내림차순으로 배치하기 위해 리스트를 뒤집는다.
9+
10+
for i in range(1, N):
11+
for j in range(i):
12+
# i번째(현재) 병사의 전투력이 j번째(비교) 병사의 전투력보다 클 경우, 즉 내림차순이 유지되는 경우
13+
if soldiers[i] > soldiers[j]:
14+
dp[i] = max(dp[i], dp[j] + 1) # i번째 병사의 DP 값을 갱신
15+
16+
# (전체 병사 수) - (가장 긴 증가하는 부분 수열의 길이) = (열외해야 할 병사의 수)
17+
print(N - max(dp))
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import sys
2+
input = sys.stdin.readline
3+
4+
n = int(input()) # 삼각형 크기
5+
triangle = []
6+
for i in range(n):
7+
line = list(map(int, input().split()))
8+
triangle.append(line)
9+
10+
# DP 채우기
11+
for i in range(1, n):
12+
for j in range(0, i+1):
13+
if j == 0:
14+
triangle[i][j] += triangle[i-1][j]
15+
elif j == i:
16+
triangle[i][j] += triangle[i-1][j-1]
17+
else:
18+
triangle[i][j] += max(triangle[i-1][j-1], triangle[i-1][j])
19+
20+
print(max(triangle[n-1]))
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import sys
2+
input = sys.stdin.readline
3+
4+
K = int(input())
5+
dp = [[0, 0] for _ in range(K+1)] # 각 리스트가 독립적으로 생성되도록 수정
6+
dp[0] = [1, 0]
7+
dp[1] = [0, 1]
8+
9+
for i in range(2, K+1):
10+
dp[i][0] = dp[i-1][0] + dp[i-2][0] # A 개수
11+
dp[i][1] = dp[i-1][1] + dp[i-2][1] # B 개수
12+
13+
print(dp[K][0], dp[K][1])
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import sys
2+
input = sys.stdin.readline
3+
4+
s = input().split(',')
5+
print(len(s))

0 commit comments

Comments
 (0)