Skip to content

Commit 3e7710d

Browse files
authored
Merge branch 'AlgorithmStudy-Allumbus:main' into main
2 parents e95ec66 + 38cb2d1 commit 3e7710d

15 files changed

+332
-4
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
'''
2+
[๋ฌธ์ œ] : https://school.programmers.co.kr/learn/courses/30/lessons/12924#
3+
[Flow]
4+
์—ฐ์†๋œ ์ž์—ฐ์ˆ˜์˜ ์กฐํ•ฉ-> two point
5+
0. ์ดˆ๊ธฐํ™”
6+
start == end-1 = 0
7+
while end <= len(words) and start < end
8+
1. sum(words[start,end]) < target
9+
-> end += 1
10+
2. sum(words[start,end]) == target
11+
-> count += 1
12+
-> start += 1
13+
-> end = start +1
14+
15+
3. sum(words[start,end]) > 0
16+
-> 2์™€ ๋™์ผ
17+
18+
'''
19+
def solution(n):
20+
answer = 1 # ๋ณธ์ธ= target
21+
start = 0 ; end = start +1 ;
22+
answer_li = []
23+
half= round(n//2) +2
24+
field = range(1,half) # ๋ฐ˜์˜ฌ๋ฆผ
25+
field = list(field)
26+
27+
while n > 2 and end <= len(field) and start < end and start < len(field): #
28+
current =sum(field[start : end])
29+
if current < n :
30+
end += 1
31+
else : # currnet >= n
32+
if current == n :
33+
answer += 1
34+
answer_li.append([start, end])
35+
start += 1
36+
end = start +1
37+
return answer

โ€ŽHongjoo/๋ฐฑ์ค€/๋ฌธ์ž์—ด๊ตํ™˜.pyโ€Ž

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@
44

55
words= input()
66
window_size = words.count("a") # 1. a์˜ ๊ฐœ์ˆ˜ = sliding window ํฌ๊ธฐ
7-
result = 999999999
7+
result = 99999999
88

99
# ์›ํ˜• ๋ฌธ์ž์—ด
1010
words += words[0:window_size-1]
1111
# 2. ์ตœ๋Œ€ํ•œ a ๊ฐ€ ์—ฐ์†ํ•ด ์žˆ๋Š” idx ๋ฒ”์œ„ ์ฐพ๊ธฐ
1212
for start in range(len(words) - (window_size-1)):
1313
result = min(result, words[start: start+ window_size].count("b"))
1414

15-
print(result)
15+
print(result)
16+

โ€ŽHongjoo/๋ฐฑ์ค€/๋ถ€๋ถ„ํ•ฉ.pyโ€Ž

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
"""
2+
๋ฌธ์ œ : # 1806๋ถ€๋ถ„ํ•ฉ
23
https://www.acmicpc.net/problem/1806
4+
5+
ํ•ด์„ค :
6+
https://aia1235.tistory.com/46
7+
38
"""
49
import sys
510
N ,S = map(int, sys.stdin.readline().split())
@@ -17,11 +22,11 @@
1722
end += 1
1823
if end < N :
1924
partial_sum += arr[end]
20-
else : # ์ˆ˜์—ด ๋ -> ์กฐ๊ฑด ์ถฉ์กฑ x
25+
else : #๋ฐ˜๋ณต๋ฌธ ๋
2126
break
2227

2328

24-
if min_length == 100000 :
29+
if min_length == 100000 : # ์ˆ˜์—ด ๋ -> ์กฐ๊ฑด ์ถฉ์กฑ x
2530
print(0)
2631
else :
2732
print(min_length)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
N = int(input())
2+
ansList = []
3+
4+
for i in range(N):
5+
days = int(input())
6+
costs = list(map(int, input().split()))
7+
ans = 0
8+
9+
maxCost = -1
10+
11+
for j in range(len(costs) - 1, -1, -1):
12+
if maxCost > costs[j]:
13+
ans += maxCost - costs[j]
14+
else:
15+
maxCost = costs[j]
16+
17+
ansList.append(ans)
18+
19+
for i in range(len(ansList)):
20+
print(f"#{i + 1} {ansList[i]}")
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
N = int(input())
2+
3+
for i in range(N):
4+
num = int(input())
5+
6+
arr = [[-1] * num for _ in range(num)]
7+
val = 1
8+
9+
row = 0
10+
col = 0
11+
12+
dx = [-1, 1, 0, 0]
13+
dy = [0, 0, -1, 1]
14+
15+
dir = 3
16+
17+
while True:
18+
19+
if val > num * num:
20+
break
21+
22+
arr[row][col] = val
23+
val += 1
24+
25+
newRow = row + dx[dir]
26+
newCol = col + dy[dir]
27+
28+
if newRow >= num or newRow < 0 or newCol >= num or newCol < 0 or arr[newRow][newCol] != -1:
29+
if dir == 0:
30+
dir = 3
31+
elif dir == 1:
32+
dir = 2
33+
elif dir == 2:
34+
dir = 0
35+
elif dir == 3:
36+
dir = 1
37+
38+
row = row + dx[dir]
39+
col = col + dy[dir]
40+
else:
41+
row = newRow
42+
col = newCol
43+
44+
print(f"#{i+1}")
45+
for j in range(num):
46+
for k in range(num):
47+
print(arr[j][k], end=" ")
48+
print()
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import sys
2+
3+
# ์ž…๋ ฅ ์ฒ˜๋ฆฌ
4+
N, S = map(int, sys.stdin.readline().split())
5+
arr = list(map(int, sys.stdin.readline().split()))
6+
7+
# ์ดˆ๊ธฐํ™”
8+
ans = float('inf')
9+
start, end = 0, 0
10+
current_sum = 0
11+
12+
# ํˆฌ ํฌ์ธํ„ฐ๋กœ ๋ถ€๋ถ„ํ•ฉ ์ฐพ๊ธฐ
13+
while end < N:
14+
current_sum += arr[end]
15+
end += 1
16+
17+
# ํ˜„์žฌ ํ•ฉ์ด S ์ด์ƒ์ผ ๊ฒฝ์šฐ
18+
while current_sum >= S:
19+
ans = min(ans, end - start)
20+
current_sum -= arr[start]
21+
start += 1
22+
23+
24+
print(0 if ans == float('inf') else ans)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
answer = 0
2+
n = 0
3+
visited = []
4+
5+
6+
def dfs(k, cnt, dungeons):
7+
global answer
8+
# ์ตœ๋Œ€ ํƒํ—˜ ํšŸ์ˆ˜ ๊ฐฑ์‹ 
9+
if cnt > answer:
10+
answer = cnt
11+
12+
# ๊ฐ ๋˜์ „์— ๋Œ€ํ•ด ํƒํ—˜ ์‹œ๋„
13+
for i in range(n):
14+
if k >= dungeons[i][0] and not visited[i]: # ์ตœ์†Œ ํ•„์š” ํ”ผ๋กœ๋„ ์กฐ๊ฑด ๋งŒ์กฑ
15+
visited[i] = 1
16+
dfs(k - dungeons[i][1], cnt + 1, dungeons) # ํƒํ—˜
17+
visited[i] = 0 # ์ƒํƒœ ๋ณต๊ตฌ (๋ฐฑํŠธ๋ž˜ํ‚น)
18+
19+
20+
def solution(k, dungeons):
21+
global n, visited
22+
n = len(dungeons) # ๋˜์ „ ๊ฐœ์ˆ˜
23+
visited = [0] * n # ๋ฐฉ๋ฌธ ์—ฌ๋ถ€ ์ดˆ๊ธฐํ™”
24+
dfs(k, 0, dungeons)
25+
return answer
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
answer = 0
2+
n = 0
3+
visited = []
4+
5+
6+
def dfs(k, cnt, dungeons):
7+
global answer
8+
# ์ตœ๋Œ€ ํƒํ—˜ ํšŸ์ˆ˜ ๊ฐฑ์‹ 
9+
if cnt > answer:
10+
answer = cnt
11+
12+
# ๊ฐ ๋˜์ „์— ๋Œ€ํ•ด ํƒํ—˜ ์‹œ๋„
13+
for i in range(n):
14+
if k >= dungeons[i][0] and not visited[i]: # ์ตœ์†Œ ํ•„์š” ํ”ผ๋กœ๋„ ์กฐ๊ฑด ๋งŒ์กฑ
15+
visited[i] = 1
16+
dfs(k - dungeons[i][1], cnt + 1, dungeons) # ํƒํ—˜
17+
visited[i] = 0 # ์ƒํƒœ ๋ณต๊ตฌ (๋ฐฑํŠธ๋ž˜ํ‚น)
18+
19+
20+
def solution(k, dungeons):
21+
global n, visited
22+
n = len(dungeons) # ๋˜์ „ ๊ฐœ์ˆ˜
23+
visited = [0] * n # ๋ฐฉ๋ฌธ ์—ฌ๋ถ€ ์ดˆ๊ธฐํ™”
24+
dfs(k, 0, dungeons)
25+
return answer
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
from itertools import permutations
2+
import math
3+
4+
5+
# ์†Œ์ˆ˜ ํŒ๋ณ„ ํ•จ์ˆ˜
6+
def is_prime_num(n):
7+
if n < 2:
8+
return False
9+
for i in range(2, int(math.sqrt(n)) + 1): # n์˜ ์ œ๊ณฑ๊ทผ์„ ์ •์ˆ˜ํ™” ์‹œ์ผœ์ค€ ํ›„ + 1
10+
if n % i == 0: # i๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ False ๋ฆฌํ„ด
11+
return False
12+
return True # False๊ฐ€ ๋ฆฌํ„ด๋˜์ง€ ์•Š๊ณ  for๋ฌธ์„ ๋น ์ ธ๋‚˜์™”๋‹ค๋ฉด ์†Œ์ˆ˜์ด๋ฏ€๋กœ True ๋ฆฌํ„ด
13+
14+
15+
# ๋ฌธ์ œ ํ•ด๊ฒฐ ํ•จ์ˆ˜
16+
def solution(numbers):
17+
answer = 0
18+
numbers_list = list(numbers)
19+
prime_set = set()
20+
21+
# ๋ชจ๋“  ์ˆœ์—ด ์ƒ์„ฑ
22+
for i in range(1, len(numbers) + 1):
23+
for perm in permutations(numbers_list, i):
24+
prime_set.add(int(''.join(perm)))
25+
26+
prime_set -= {0, 1} # 0 ๋˜๋Š” 1์€ ์ˆœ์—ด ์ง‘ํ•ฉ์—์„œ ์ œ๊ฑฐํ•˜๊ธฐ
27+
28+
# ์ˆœ์—ด ์ง‘ํ•ฉ์—์„œ ์†Œ์ˆ˜์ธ ๊ฐ’์„ ๋ฐœ๊ฒฌํ•˜๋ฉด +1
29+
for num in prime_set:
30+
if is_prime_num(num):
31+
answer += 1
32+
33+
return answer
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
n = int(input())
2+
3+
# ์ŠนํŒจ๋ฅผ ๊ธฐ๋กํ•  ๋ฐฐ์—ด
4+
win = [-1] * (n + 1)
5+
6+
# ์ดˆ๊ธฐ ๊ฐ’ ์„ค์ •
7+
win[1] = 1 # SK
8+
win[2] = 0 # CY
9+
win[3] = 1 # SK
10+
11+
# ์ ํ™”์‹์œผ๋กœ ์ŠนํŒจ ๊ณ„์‚ฐ
12+
for i in range(4, n + 1):
13+
if win[i-1] == 1 or win[i-3] == 1:
14+
win[i] = 0 # CY๊ฐ€ ์Šน๋ฆฌ
15+
else:
16+
win[i] = 1 # SK๊ฐ€ ์Šน๋ฆฌ
17+
18+
# ๊ฒฐ๊ณผ ์ถœ๋ ฅ
19+
if win[n] == 1:
20+
print("SK")
21+
else:
22+
print("CY")

0 commit comments

Comments
ย (0)