Skip to content

Commit e1db1aa

Browse files
authored
Merge pull request #194 from AlgorithmStudy-Allumbus/hongjoo
Hongjoo/4์›” 3์ฃผ์ฐจ/5๋ฌธ์ œ
2 parents 8a1b911 + cbc84f2 commit e1db1aa

5 files changed

+200
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
"""
2+
https://www.acmicpc.net/problem/16401
3+
์‹ค๋ฒ„2
4+
5+
# ์กฐ๊ฑด
6+
- ๋ฌด์กฐ๊ฑด ๊ฐ™์€ ๊ธธ์ด ใ…ข ๊ณผ์ž
7+
#๋ฌธ์ œ
8+
- M๋ช…์˜ ์กฐ์นด , N ๊ฐœ์˜ ๊ณผ์ž -> 1๋ช…์—๊ฒŒ ์ค„ ์ˆ˜ ์ž‡๋Š” ์ตœ๋Œ€๊ธธ์ด
9+
- ๊ณผ์ž๋Š” ๊ธธ์ด์™€ ์ƒ๊ด€ ์—†์ด ์—ฌ๋Ÿฌ์กฐ๊ฐ ๋‚˜๋ˆ ์งˆ ์ˆ˜ ์žˆ์Œ+ ํ•˜๋‚˜๋กœ ํ•ฉ์น  ์ˆ˜ ์—†์Œ , ๊ธธ์ด๋Š” ์–‘์ˆ˜
10+
# ์œ ํ˜• :
11+
12+
"""
13+
import sys
14+
m,n=map(int,sys.stdin.readline().split())
15+
snack=list(map(int,sys.stdin.readline().split()))
16+
17+
start=1 #์ ์–ด๋„ ๊ธธ์ด1๋กœ ์ž˜๋ผ์•ผ ํ•จ.
18+
end=max(snack) #์ž๋ฅด๋Š” ๊ธธ์ด์˜ ์ตœ๋Œ€๋Š” ๊ณผ์ž ์ค‘ ์ œ์ผ ๊ธด ๋†ˆ
19+
20+
answer=0
21+
while start<=end:
22+
mid=(start+end)//2
23+
24+
cnt=0
25+
for x in snack:
26+
if x<mid: #์ž๋ฅด๋ ค๋Š” ๋‹จ์œ„๋ณด๋‹ค ๊ณผ์ž๊ฐ€ ์ž‘์œผ๋ฉด ๋ชป ์ž๋ฆ„.
27+
continue
28+
else: #์ž๋ฅด๋ ค๋Š” ๋‹จ์œ„๋ณด๋‹ค ํฌ๋ฉด,
29+
cnt+=x//mid #๊ทธ ๊ณผ์ž๋ฅผ ํ•ด๋‹น ๋‹จ์œ„๋กœ ๋‚˜๋ˆˆ ๋ชซ๋งŒํผ ๊ณผ์ž ๋‚˜์˜ด.
30+
31+
if cnt>=m: #cnt๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด ๊ธธ์ด๋ฅผ ๋Š˜๋ ค์•ผ ํ•จ.
32+
start=mid+1
33+
answer=mid
34+
else: #cnt๊ฐ€ ๋„ˆ๋ฌด ์ ์œผ๋ฉด ๊ธธ์ด๋ฅผ ์ค„์—ฌ์•ผ ํ•จ
35+
end=mid-1
36+
37+
print(answer)
38+
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
"""
2+
https://www.acmicpc.net/problem/17271
3+
4+
# ์œ ํ˜• :DP
5+
- ์ด N ์ดˆ ์‹ธ์šฐ๋Š” ๋™์•ˆ ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌ ์กฐํ•ฉ์˜ ์ˆ˜
6+
- A ๋Š” 1์ดˆ , B๋Š” M ์ดˆ ์ค€๋น„์‹œ๊ฐ„
7+
- ์‹œ์ „์ค‘์— ๋‹ค๋ฅธ ์Šคํ‚ฌ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ & ์Šคํ‚ฌ์„ ์•ˆ์“ฐ๋Š” ์‹œ๊ฐ„์€ ์—†์Œ
8+
9+
10+
11+
"""
12+
#
13+
import sys; input = sys.stdin.readline
14+
MOD = 1000000007
15+
16+
N, M = map(int, input().split())
17+
18+
# i์ดˆ ๋•Œ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
19+
# i-1์ดˆ๊นŒ์ง€ ์Šคํ‚ฌ ์“ด ์ƒํƒœ์—์„œ A ์Šคํ‚ฌ ์‚ฌ์šฉ
20+
# i >= M์ผ ๋•Œ, i-M์ดˆ๊นŒ์ง€ ์Šคํ‚ฌ ์“ด ์ƒํƒœ์—์„œ B ์Šคํ‚ฌ ์‚ฌ์šฉ
21+
# dp(i) = dp(i-1) + dp(i-M)
22+
23+
dp = [1] * (N + 1)
24+
for i in range(M, N + 1): # M์ดˆ ๋ฏธ๋งŒ์ผ ๋• dp[i] = dp[i-1]์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์กฐ๊ฑด 1์ด๋‹ค.
25+
dp[i] = (dp[i - 1] + dp[i - M]) % MOD
26+
27+
print(dp[N])
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
"""
2+
https://www.acmicpc.net/problem/1759
3+
4+
4 6
5+
a t c i s w
6+
['a', 'c', 'i', 's', 't', 'w']
7+
- ๋ฌธ์ž C ๊ฐ€์ง€๋กœ ์„œ๋กœ ๋‹ค๋ฅธ L๊ฐœ์˜ ๋ฌธ์ž๋กœ ์ด๋ค„์ง„ ๋น„๋ฒˆ
8+
- ๋น„๋ฒˆ์€ ์ตœ์†Œ 1๊ฐœ์˜ ๋ชจ์Œ , ์ตœ์†Œ 2๊ฐœ์˜ ์ž์Œ
9+
- ์ •๋ ฌ๋œ ๋ฌธ์ž์—ด
10+
- goal) ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜
11+
12+
# 1. ๋ฌธ์ž ์ •๋ ฌ + ๋ชจ์Œ . ์ž์Œ ๋‚˜๋ˆ ๋‘๊ธฐ
13+
# 2. ์ค‘๋ณต x ์ผ๋ฐ˜ ์กฐํ•ฉ ? (Backtraking)
14+
# ์ค‘๋ณตx , ์ˆœ์„œ x , (์กฐํ•ฉ)
15+
16+
"""
17+
L , C = map(int,input().split())
18+
arr = sorted(list(input().split())) # ์ „์ฒด ์ •๋ ฌ
19+
20+
# print(f"1 -{arr}")
21+
result = [""] * L
22+
# print(arr)
23+
# ์ „์ฒด l ๊ฒฝ์šฐ์—์„œ c ๊ฐœ ์กฐํ•ฉ
24+
def backtracking(c , l , level , idx) :
25+
if level == l :
26+
a = 0 ; b = 0
27+
# print(f"result {result}")
28+
for k in range(l) :
29+
if result[k] in [ "a" , "e" , "i" ,"o" ,"u"]:
30+
a +=1
31+
else :
32+
b += 1
33+
if a >= 1 and b >= 2 :
34+
print("".join(result))
35+
36+
return
37+
for s in range(idx , c) :
38+
39+
result[level] = arr[s]
40+
backtracking(c,l,level+1, s+1)
41+
42+
43+
44+
backtracking(C , L , 0,0)
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
"""
2+
https://www.acmicpc.net/problem/17484
3+
4+
# ๋ฌธ์ œ
5+
- N x M ํ–‰๋ ฌ
6+
1. ์ด๋™ ๋ฐฉํ–ฅ - ์ตœํ•˜ , ํ•˜ , ์šฐํ•˜
7+
2. 2๋ฒˆ ์—ฐ์† ๋™์ผ ๋ฐฉํ–ฅ ์„ ํƒ ๋ถˆ๊ฐ€
8+
3. ๋ฐ˜๋“œ์‹œ ๋‹ฌ ๋„์ฐฉ
9+
goal ) ์ตœ์†Œ ์—ฐ๋ฃŒ
10+
11+
12+
"""
13+
import sys
14+
input = sys.stdin.readline
15+
16+
n, m = map(int, input().split())
17+
board = [list(map(int, input().split())) for _ in range(n)]
18+
dp = [[[0] * m for _ in range(n)] for _ in range(3)] # 3์ฐจ์›๋ฐฐ์—ด DP
19+
ans = sys.maxsize # ์ž„์˜์˜ ํฐ ๊ฐ’
20+
21+
for z in range(3):
22+
for y in range(m):
23+
dp[z][0][y] = board[0][y] # ์ดˆ๊ธฐ DP ์ดˆ๊ธฐํ™”
24+
25+
for x in range(1, n):
26+
for y in range(m):
27+
if y == 0:
28+
# ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ ์—ด์ธ ๊ฒฝ์šฐ
29+
# ๋Œ€๊ฐ์„  ์™ผ์ชฝ ๋ฐฉํ–ฅ(dp[0])์˜ ๊ฒฝ์šฐ, ๋ฐ”๋กœ ์œ„์—์„œ ์•„๋ž˜ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฐ’๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
30+
# ์•„๋ž˜ ๋ฐฉํ–ฅ(dp[1])์˜ ๊ฒฝ์šฐ, ์˜ค๋ฅธ์ชฝ ์œ„์—์„œ ์™ผ์ชฝ ์•„๋ž˜ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฐ’๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
31+
# ๋Œ€๊ฐ์„  ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ(dp[2])์˜ ๊ฒฝ์šฐ, ์˜ค๋ฅธ์ชฝ ์œ„์—์„œ ๋Œ€๊ฐ์„  ์™ผ์ชฝ ์ง„ํ–‰ํ•˜๋Š” ๊ฐ’๊ณผ ๋ฐ”๋กœ ์œ„์—์„œ ์•„๋ž˜ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฐ’๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
32+
# dp[0][x][y] = dp[1][x - 1][y]
33+
dp[1][x][y] = dp[0][x - 1][y + 1]
34+
dp[2][x][y] = min(dp[0][x - 1][y + 1], dp[1][x - 1][y])
35+
elif y == m - 1:
36+
# ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์—ด์ธ ๊ฒฝ์šฐ
37+
# ๋Œ€๊ฐ์„  ์™ผ์ชฝ ๋ฐฉํ–ฅ(dp[0])์˜ ๊ฒฝ์šฐ, ๋ฐ”๋กœ ์œ„์—์„œ ์•„๋ž˜ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฐ’๊ณผ ์™ผ์ชฝ ์œ„์—์„œ ๋Œ€๊ฐ์„  ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฐ’๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
38+
# ์•„๋ž˜ ๋ฐฉํ–ฅ(dp[1])์˜ ๊ฒฝ์šฐ, ์™ผ์ชฝ ์œ„์—์„œ ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฐ’๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
39+
# ๋Œ€๊ฐ์„  ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ(dp[2])์˜ ๊ฒฝ์šฐ, ๋ฐ”๋กœ ์œ„์—์„œ ์•„๋ž˜ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฐ’๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
40+
dp[0][x][y] = min(dp[1][x - 1][y], dp[2][x - 1][y - 1])
41+
dp[1][x][y] = dp[2][x - 1][y - 1]
42+
# dp[2][x][y] = dp[1][x - 1][y]
43+
else:
44+
# ์ค‘๊ฐ„ ์—ด์ธ ๊ฒฝ์šฐ
45+
# ๋Œ€๊ฐ์„  ์™ผ์ชฝ ๋ฐฉํ–ฅ(dp[0])์˜ ๊ฒฝ์šฐ, ๋ฐ”๋กœ ์œ„์—์„œ ์•„๋ž˜ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฐ’๊ณผ ์™ผ์ชฝ ์œ„์—์„œ ๋Œ€๊ฐ์„  ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฐ’๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
46+
# ์•„๋ž˜ ๋ฐฉํ–ฅ(dp[1])์˜ ๊ฒฝ์šฐ, ์˜ค๋ฅธ์ชฝ ์œ„์—์„œ ๋Œ€๊ฐ์„  ์™ผ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฐ’๊ณผ ์™ผ์ชฝ ์œ„์—์„œ ๋Œ€๊ฐ์„  ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฐ’๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
47+
# ๋Œ€๊ฐ์„  ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ(dp[2])์˜ ๊ฒฝ์šฐ, ์˜ค๋ฅธ์ชฝ ์œ„์—์„œ ๋Œ€๊ฐ์„  ์™ผ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฐ’๊ณผ ๋ฐ”๋กœ ์œ„์—์„œ ์•„๋ž˜ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฐ’๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
48+
dp[0][x][y] = min(dp[1][x - 1][y], dp[2][x - 1][y - 1])
49+
dp[1][x][y] = min(dp[0][x - 1][y + 1], dp[2][x - 1][y - 1])
50+
dp[2][x][y] = min(dp[0][x - 1][y + 1], dp[1][x - 1][y])
51+
52+
for z in range(3): # ์›๋ž˜ ์ž์‹ ์˜ ์ขŒํ‘œ๊ฐ’ ๋”ํ•จ
53+
dp[z][x][y] += board[x][y]
54+
55+
for z in range(3): # 3์ฐจ์› ๋ฐฐ์—ด ์ค‘ ๋งˆ์ง€๋ง‰ ํ–‰์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์Œ
56+
ans = min(ans, min(dp[z][-1]))
57+
58+
print(ans)
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
"""
2+
https://www.acmicpc.net/problem/2156
3+
# ๋ฌธ์ œ : ์ตœ๋Œ€ํ•œ ๋งŽ์€ ์–‘์˜ ํฌ๋„์ฃผ ์„ญ์ทจ
4+
<์กฐ๊ฑด>
5+
1. ์„ ํƒํ•œ ์ž”์˜ ํฌ๋‘์ฃผ๋Š” ๋ชจ๋‘ ์„ญ์ทจ ,๋งˆ์‹  ๋’ค ์›์ƒ๋ณต๊ท€
6+
2. ์—ฐ์†์œผ๋กœ ๋†“์—ฌ์ง„ 3์ž” ๋ชจ๋‘ ์„ญ์ทจ ๋ถˆ๊ฐ€
7+
8+
# ์ตœ๋Œ€๋ฌธ์ œ -> "DP"
9+
10+
์ ํ™”์‹
11+
dp[i] : ํ˜„์žฌ i ์—์„œ ์ตœ๋Œ€ ๋งˆ์‹ค ์ˆ˜ ์žˆ๋Š” ํฌ๋„์ฃผ ์ดํ•ฉ
12+
1. ํ˜„์žฌ O , ์ด์ „ O , ์ „์ „ x :
13+
2. ํ˜„์žฌ , ์ด์ „ x , ์ „์ „ O =
14+
3. ํ˜„์žฌ x , ์ด์ „ o , ์ „์ „ o =
15+
dp[i] = max(cups[i] + cups[i-1] + dp[i-3] , cups[i] + dp[i-2] , dp[i-1])
16+
"""
17+
# 1. ์ž…๋ ฅ๋ณ€์ˆ˜
18+
N = int(input())
19+
cups = [int(input()) for _ in range(N)]
20+
21+
# 2.
22+
dp = [0]*N
23+
24+
dp[0] = cups[0]
25+
if N >=2 :
26+
dp[1] = sum(cups[0:2])
27+
if N >= 3 :
28+
dp[2] = max(cups[2] + cups[1] , cups[2] + cups[0] , dp[1])
29+
if N >= 4 :
30+
for i in range(3,N):
31+
dp[i] = max(cups[i] + cups[i-1] + dp[i-3] , cups[i] + dp[i-2] , dp[i-1])
32+
# print(dp)
33+
print(dp[-1])

0 commit comments

Comments
ย (0)