์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- swagger
- 2024-08-21
- URN
- ๊ธฐ์ด100์
- AndroidStudio
- Factory Method Pattern
- http method
- reflection
- uri
- fontstyle
- OOP
- datepicker
- ์ด๋ ธํ ์ด์
- Python
- ํ๋ IT&E
- ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ
- Android Studio
- 2024-08-20
- di
- Dialog
- Kotlin
- url
- FACTORY
- tcp
- udp
- ์ฑ์ฉํ์ ํ
- IOC
- OpenAPI
- ์ฝ๋์
- menutab
dingdong coding
[ ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค with ํ์ด์ฌ ] Greedy ๋ณธ๋ฌธ
[ ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค with ํ์ด์ฌ ] Greedy
๐ถ ๊ฐ๋ฐ๊ฐ๋ฐ ๐พ 2022. 2. 8. 03:41
๊ทธ๋ฆฌ๋ (ํ์๋ฒ)
: ํ์ฌ ์ํฉ์์ ์ง๊ธ ๋น์ฅ ์ข์ ๊ฒ๋ง ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒ
1. ๊ฑฐ์ค๋ฆ๋ (์์ )
2. ํฐ ์์ ๋ฒ์น (์ค์ ๋ฌธ์ )
3. ์ซ์ ์นด๋ ๊ฒ์ (์ค์ ๋ฌธ์ )
4. 1์ด ๋ ๋๊น์ง (์ค์ ๋ฌธ์ )
[ ์์ 1 ] ๊ฑฐ์ค๋ฆ๋
โป ๋ฌธ์
์นด์ดํฐ์๋ ๊ฑฐ์ค๋ฆ๋์ผ๋ก ์ฌ์ฉํ 500์,100์,50์,10์์ง๋ฆฌ ๋์ ์ด ๋ฌดํํ ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํ๋ค.
์๋์๊ฒ ๊ฑฐ์ฌ๋ฌ ์ค์ผ ํ ๋์ด N์์ผ ๋ ๊ฑฐ์ฌ๋ฌ์ค์ผํ ๋์ ์ ์ต์ ๊ฐ์๋ฅผ ๊ตฌํ๋ผ.
๋จ N์ ํญ์ 10์ ๋ฐฐ์์ด๋ค.
# ๊ฑฐ์ค๋ฆ ๋
n = 1260
count = 0
# ํฐ ๋จ์์ ํํ๋ถํฐ ์ฐจ๋ก๋๋ก ํ์ธํ๊ธฐ
array = [500, 100, 50, 10]
for coin in array:
count += n // coin # ํด๋น ํํ๋ก ๊ฑฐ์ฌ๋ฌ ์ค ์ ์๋ ๋์ ์ ๊ฐ์ ์ธ๊ธฐ // : ๋ชซ ์ฐ์ฐ์
n %= coin # % : ๋๋จธ์ง ์ฐ์ฐ์
print(count)
์ถ๋ ฅ 6
[ ์ค์ ๋ฌธ์ ] ํฐ ์์ ๋ฒ์น
โป ๋ฌธ์
๋ฐฐ์ด์ด ์์ ๋ ์ฃผ์ด์ง ์๋ค์ M๋ฒ ๋ํ์ฌ ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ง๋๋ ๋ฒ์น
๋จ, ๋ฐฐ์ด์ ํน์ ํ ์ธ๋ฑ์ค์ ํด๋นํ๋ ์๊ฐ ์ฐ์ํด์ K๋ฒ์ ์ด๊ณผํ์ฌ ๋ํด์ง ์ ์๋ค.
๋ฐฐ์ด์ ํฌ๊ธฐ N, ์ซ์๊ฐ ๋ํด์ง๋ ํ์ M, ๊ทธ๋ฆฌ๊ณ K๊ฐ ์ฃผ์ด์ง ๋ ๋๋น์ด์ ํฐ ์์ ๋ฒ์น์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ์์ค
# ํฐ ์์ ๋ฒ์น (์ฒ์ ์์ฑํ ์ฝ๋)
n, m, k = map(int, input().split())
a = list(map(int, input().split()))
a.sort()
a.reverse()
renew = [a[0], a[1]]
result = 0
while m >= 1:
for i in range(k):
result += int(renew[0])
m -= 1
result += int(renew[1])
m -= 1
print(result)
์ ๋ ฅ
5 8 3
2 4 5 4 6
์ถ๋ ฅ 46
--- ํ์ด ํด์ค ---
# ํฐ ์์ ๋ฒ์น (ํ์ดํด์ค1)
# N, M, K ๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์
๋ ฅ๋ฐ๊ธฐ
n, m, k = map(int, input().split())
# N๊ฐ์ ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์
๋ ฅ๋ฐ๊ธฐ
data = list(map(int, input().split()))
data.sort() # ์
๋ ฅ๋ฐ์ ์๋ค ์ ๋ ฌ
first = data[n - 1] # ๊ฐ์ฅ ํฐ ์
second = data[n - 2] # ๋ ๋ฒ์งธ๋ก ํฐ ์
result = 0
while True:
for i in range(k): # ๊ฐ์ฅ ํฐ ์๋ฅผ K๋ฒ ๋ํ๊ธฐ
if m == 0: # m์ด 0 ์ด๋ผ๋ฉด ๋ฐ๋ณต๋ฌธ ํ์ถ
break
result += first
m -= 1
if m == 0 :
break
result += second # ๋ ๋ฒ์งธ๋ก ํฐ ์๋ฅผ ํ ๋ฒ ๋ํ๊ธฐ
m -= 1 # ๋ํ ๋๋ง๋ค 1์ฉ ๋นผ๊ธฐ
print(result)
# ํฐ ์์ ๋ฒ์น (ํ์ดํด์ค2)
# N, M, K ๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์
๋ ฅ๋ฐ๊ธฐ
n, m, k = map(int, input().split())
# N๊ฐ์ ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์
๋ ฅ๋ฐ๊ธฐ
data = list(map(int, input().split()))
data.sort() # ์
๋ ฅ๋ฐ์ ์๋ค ์ ๋ ฌ
first = data[n - 1] # ๊ฐ์ฅ ํฐ ์
second = data[n - 2] # ๋ ๋ฒ์งธ๋ก ํฐ ์
# ๊ฐ์ฅ ํฐ ์๊ฐ ๋ํด์ง๋ ํ์ ๊ณ์ฐ
count = int(m / (k + 1)) * k
count += m % (k + 1)
result = 0
result += (count) * first # ๊ฐ์ฅ ํฐ ์ ๋ํ๊ธฐ
result += (m - count) * second
print(result)
[ ์ค์ ๋ฌธ์ ] ์ซ์ ์นด๋ ๊ฒ์
โป ๋ฌธ์
์ซ์ ์นด๋ ๊ฒ์์ ์ฌ๋ฌ ๊ฐ์ ์ซ์ ์นด๋ ์ค์์ ์๋น ๋์ ์ซ์๊ฐ ์ฐ์ธ ์นด๋ ํ ์ฅ์ ๋ฝ๋ ๊ฒ์์ด๋ค.
๋จ, ๊ฒ์์ ๋ฃฐ์ ์ง์ผ์ผ ํ๋ค.
1. ๋ฝ๊ณ ์ ํ๋ ์นด๋๊ฐ ํฌํจ๋์ด ์๋ ํ์ ์ ํ 2. ๊ทธ ๋ค์ ์ ํ๋ ํ์ ํฌํจ๋ ์นด๋๋ค ์ค ๊ฐ์ฅ ์ซ์๊ฐ ๋ฎ์ ์นด๋๋ฅผ ๋ฝ์์ผ ํจ3. ๋ฐ๋ผ์ ์ฒ์์ ์นด๋๋ฅผ ๊ณจ๋ผ๋ผ ํ์ ์ ํํ ๋, ์ดํ์ ํ์์ ๊ฐ์ฅ ์ซ์๊ฐ ๋ฎ์ ์นด๋๋ฅผ ๋ฝ์ ๊ฒ์ ๊ณ ๋ คํ์ฌ ์ต์ข ์ ์ผ๋ก ๊ฐ์ฅ ๋์ ์ซ์์ ์นด๋๋ฅผ ๋ฝ์ ์ ์๋๋ก ์ ๋ต ์ธ์ฐ๊ธฐ
์นด๋๋ค์ด N (ํ) x M (์ด) ํํ๋ก ๋์ฌ ์์ ๋, ๊ฒ์์ ๋ฃฐ์ ๋ง๊ฒ ์นด๋๋ฅผ ๋ฝ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋์์ค.
# ์ซ์ ์นด๋ ๊ฒ์
n, m = map(int, input().split())
result = 0
for i in range(n):
data = list(map(int, input().split()))
min_value = min(data)
result = max(0, min_value)
print(result)
์ ๋ ฅ
3 3
3 1 2
4 1 4
2 2 2
์ถ๋ ฅ 2
[ ์ค์ ๋ฌธ์ ] 1์ด ๋ ๋๊น์ง
โป ๋ฌธ์
์ด๋ ํ ์ N์ด 1์ด ๋ ๋๊น์ง ๋ค์์ ๋ ๊ณผ์ ์ค ํ๋๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ ํํ์ฌ ์ํํ๋ ค๊ณ ํ๋ค.
๋จ, ๋ ๋ฒ์งธ ์ฐ์ฐ์ N์ด K๋ก ๋๋์ด ๋จ์ด์ง ๋๋ง ์ ํํ ์ ์๋ค.
1. N์์ 1์ ๋บ๋ค.
2. N์ K๋ก ๋๋๋ค.
N๊ณผ K๊ฐ ์ฃผ์ด์ง ๋ N์ด 1์ด ๋ ๋๊น์ง 1๋ฒ ํน์ 2๋ฒ์ ๊ณผ์ ์ ์ํํด์ผํ๋ ์ต์ ํ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค
# 1์ด ๋ ๋๊น์ง (์ฒ์ ์์ฑํ ์ฝ๋)
n, k = input().split()
n = int(n)
k = int(k)
min = 0
while n >= k:
while n % k != 0:
n = n - 1
min += 1
n //= k
min += 1
print(min)
# 1์ด ๋ ๋๊น์ง (ํ์ด ํด์ค)
n, k = map(int, input().split())
result = 0 # 1, 2
while True:
# N์ด K๋ก ๋๋์ด ๋จ์ด์ง๋ ์๊ฐ ๋ ๋๊น์ง๋ง 1์ฉ ๋นผ๊ธฐ
target = (n // k) * k # 25 , 5, 1
result += (n - target) # 25 -25 = 0, 5-5 = 0 1-1 =0
n = target # 25, 5, 1
# N์ด K๋ณด๋ค ์์ ๋ (๋ ์ด์ ๋๋ ์ ์์ ๋) ๋ฐ๋ณต๋ฌธ ํ์ถ
if n < k: # 25, 5, 1
break
# K๋ก ๋๋๊ธฐ
result += 1
n //= k # 25//5 = 5 , 5//5 = 1
# ๋ง์ง๋ง ์ผ๋ก ๋จ์ ์์ ๋ํ์ฌ 1์ฉ ๋นผ๊ธฐ
result += (n - 1) # 3-1
print(result) # 2
# 1์ด ๋ ๋๊น์ง
n, k = map(int, input().split())
result = 0
while True:
if n % k != 0:
n -= 1
result += 1
else:
n = n / k
result += 1
if n == 1:
break
print(result)
์ ๋ ฅ
25 5
์ถ๋ ฅ 2
'๐ตCoding Test > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค with ํ์ด์ฌ ] ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ (0) | 2022.04.29 |
---|---|
[ ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค with ํ์ด์ฌ ] ์ด์ง ํ์ (0) | 2022.03.23 |
[ ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค with ํ์ด์ฌ ] ์ ๋ ฌ (0) | 2022.03.23 |
[ ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค with ํ์ด์ฌ ] DFS/BFS (0) | 2022.03.21 |
[ ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค with ํ์ด์ฌ ] Implementaion (0) | 2022.02.25 |