Skip to content

Commit f3be146

Browse files
authored
Merge pull request #33 from Mingguriguri/minjeong
Minjeong / 6์›” 5์ฃผ์ฐจ / 3๋ฌธ์ œ
2 parents cada402 + b134f62 commit f3be146

4 files changed

+114
-0
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
import sys
2+
input = sys.stdin.readline
3+
4+
n = int(input())
5+
nums = list(map(int, input().strip().split()))
6+
ops = list(map(int, input().strip().split()))
7+
8+
# ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •
9+
max_result = -int(1e9)
10+
min_result = int(1e9)
11+
12+
def dfs(nums, index, current_result, plus, minus, multiply, divide):
13+
global max_result, min_result
14+
15+
if index == len(nums):
16+
# ๋ชจ๋“  ์ˆซ์ž๋ฅผ ๋‹ค ์‚ฌ์šฉํ–ˆ์œผ๋ฉด ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’ ๊ฐฑ์‹ 
17+
max_result = max(max_result, current_result)
18+
min_result = min(min_result, current_result)
19+
return
20+
21+
if plus > 0:
22+
dfs(nums, index + 1, current_result + nums[index], plus - 1, minus, multiply, divide)
23+
if minus > 0:
24+
dfs(nums, index + 1, current_result - nums[index], plus, minus - 1, multiply, divide)
25+
if multiply > 0:
26+
dfs(nums, index + 1, current_result * nums[index], plus, minus, multiply - 1, divide)
27+
if divide > 0:
28+
if current_result < 0:
29+
# ์Œ์ˆ˜์ผ ๋•Œ์˜ ๋‚˜๋ˆ—์…ˆ ์ฒ˜๋ฆฌ
30+
dfs(nums, index + 1, -(-current_result // nums[index]), plus, minus, multiply, divide - 1)
31+
else:
32+
dfs(nums, index + 1, current_result // nums[index], plus, minus, multiply, divide - 1)
33+
34+
35+
36+
# ์ดˆ๊ธฐ๊ฐ’์€ ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž, index๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘
37+
dfs(nums, 1, nums[0], ops[0], ops[1], ops[2], ops[3])
38+
39+
print(max_result)
40+
print(min_result)
41+
42+
'''
43+
# 3๋‹ฌ ์ „ ํ’€์ด
44+
45+
# ์ž…๋ ฅ๋ฐ›๊ธฐ
46+
n = int(input()) # ์ˆ˜์˜ ๊ฐœ์ˆ˜
47+
nums = list(map(int, input().split())) # ์ˆ˜์—ด
48+
operator = list(map(int, input().split()))
49+
50+
# ์ตœ์†Ÿ๊ฐ’, ์ตœ๋Œ“๊ฐ’ ์ดˆ๊ธฐํ™”
51+
maxValue = int(-1e9)
52+
minValue = int(1e9)
53+
54+
def calculator(idx, res, add, sub, prd, div):
55+
global minValue, maxValue
56+
57+
if idx == n:
58+
# ์ตœ์†Ÿ๊ฐ’๊ณผ ์ตœ๋Œ“๊ฐ’ ๊ฐฑ์‹ 
59+
maxValue = max(maxValue, res)
60+
minValue = min(minValue, res)
61+
return
62+
63+
if add > 0:
64+
calculator(idx + 1, res + nums[idx], add-1, sub, prd, div)
65+
66+
if sub > 0:
67+
calculator(idx + 1, res - nums[idx], add, sub-1, prd, div)
68+
69+
if prd > 0:
70+
calculator(idx + 1, res * nums[idx], add, sub, prd-1, div)
71+
72+
if div > 0:
73+
calculator(idx + 1, int(res / nums[idx]), add, sub, prd, div-1)
74+
75+
calculator(1, nums[0], operator[0], operator[1], operator[2], operator[3])
76+
print(maxValue)
77+
print(minValue)
78+
'''
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
def solution(citations):
2+
citations.sort()
3+
4+
for i in range(len(citations)):
5+
if citations[i] >= len(citations) - i:
6+
return len(citations) - i
7+
return 0
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
def solution(phone_book):
2+
# ์ „ํ™”๋ฒˆํ˜ธ๋ถ€ phone_book์„ ์ง‘ํ•ฉ(set())์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ prefixes์— ์ €์žฅ.
3+
# ์ง‘ํ•ฉ์œผ๋กœ ์ €์žฅํ•˜๋Š” ์ด์œ ๋Š” in ์—ฐ์‚ฐ์ด ํ‰๊ท ์ ์œผ๋กœ $O(1)$์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ for ๋ฌธ ์•ˆ์—์„œ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ํšจ์œจ์ ์ด๊ธฐ ๋•Œ๋ฌธ
4+
prefixes = set(phone_book)
5+
6+
for number in phone_book:
7+
for i in range(1, len(number)):
8+
# ๊ฐ ์ „ํ™”๋ฒˆํ˜ธ number์— ๋Œ€ํ•ด, ๊ธธ์ด๊ฐ€ 1์ด์ƒ์ธ ๊ทธ ์ „ํ™”๋ฒˆํ˜ธ์˜ ๋ชจ๋“  ์ ‘๋‘์–ด๋ฅผ prefix์— ๋ฐ˜๋ณตํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค.
9+
prefix = number[:i]
10+
# prefix๊ฐ€ prefixes์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
11+
if prefix in prefixes:
12+
return False # ์กด์žฌํ•˜๋ฉด ๋ฐ”๋กœ False
13+
return True # ๋ชจ๋“  ๋ฒˆํ˜ธ์— ๋Œ€ํ•ด ์ ‘๋‘์–ด๊ฐ€ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด True ๋ฐ˜ํ™˜
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import math
2+
def solution(progresses, speeds):
3+
answer = [] # ์ •๋‹ต๋ฆฌ์ŠคํŠธ
4+
stack = [] # ์Šคํƒ
5+
feat_count = len(progresses) # ์ด ๊ธฐ๋Šฅ ๊ฐœ์ˆ˜
6+
for i in range(feat_count):
7+
day = math.ceil((100 - progresses[i]) / speeds[i]) # ๊ฑธ๋ฆฌ๋Š” ๋‚ ์งœ ๊ณ„์‚ฐ, ๋ฌด์กฐ๊ฑด ์˜ฌ๋ฆผ
8+
# ์Šคํƒ์ด ๋น„์–ด ์žˆ๊ฑฐ๋‚˜, ์ฒ˜์Œ ์Šคํƒ์— ๋“ค์–ด๊ฐ„ ๊ฐ’๋ณด๋‹ค ๊ฑธ๋ฆฌ๋Š” ๋‚ ์งœ๊ฐ€ ๊ฐ™๊ฑฐ๋‚˜ ์ž‘๋‹ค๋ฉด push
9+
if not stack or stack[0] >= day:
10+
stack.append(day)
11+
# ์•„๋‹ˆ๋ผ๋ฉด ์Šคํƒ์˜ ๊ธธ์ด๋ฅผ ์ •๋‹ต๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•˜๊ณ  ์Šคํƒ์— ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ๋Œ€์น˜
12+
else:
13+
answer.append(len(stack))
14+
stack = [day]
15+
answer.append(len(stack)) # ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€ํ•˜์ง€ ๋ชปํ•œ answer ์ถ”๊ฐ€
16+
return answer

0 commit comments

Comments
ย (0)