์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- Python
- 2024-08-21
- uri
- URN
- swagger
- Android Studio
- udp
- OpenAPI
- http method
- Kotlin
- di
- ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ
- ํ๋ IT&E
- 2024-08-20
- menutab
- ์ด๋ ธํ ์ด์
- FACTORY
- ์ฝ๋์
- url
- IOC
- reflection
- OOP
- ๊ธฐ์ด100์
- fontstyle
- ์ฑ์ฉํ์ ํ
- tcp
- Dialog
- Factory Method Pattern
- AndroidStudio
- datepicker
dingdong coding
[ ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค with ํ์ด์ฌ ] Greedy ๊ธฐ์ถ๋ฌธ์ ๋ณธ๋ฌธ
[ ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค with ํ์ด์ฌ ] Greedy ๊ธฐ์ถ๋ฌธ์
๐ถ ๊ฐ๋ฐ๊ฐ๋ฐ ๐พ 2022. 6. 16. 19:23
1. ๋ชจํ๊ฐ ๊ธธ๋
• ๋ฌธ์
ํ ๋ง์์ ๋ชจํ๊ฐ๊ฐ N๋ช ์์ต๋๋ค. ๋ชจํ๊ฐ ๊ธธ๋์์๋ N๋ช ์ ๋ชจํ๊ฐ๋ฅผ ๋์์ผ๋ก '๊ณตํฌ๋'๋ฅผ ์ธก์ ํ๋๋ฐ, '๊ณตํฌ๋'๊ฐ ๋์ ๋ชจํ๊ฐ๋ ์ฝ๊ฒ ๊ณตํฌ๋ฅผ ๋๊ปด ์ํ ์ํฉ์์ ์ ๋๋ก ๋์ฒํ ๋ฅ๋ ฅ์ด ๋จ์ด์ง๋๋ค.
๋ชจํ๊ฐ ๊ธธ๋์ฅ์ธ ๋๋น์ด๋ ๋ชจํ๊ฐ ๊ทธ๋ฃน์ ์์ ํ๊ฒ ๊ตฌ์ฑํ๊ณ ์ ๊ณตํฌ๋๊ฐ X์ธ ๋ชจํ๊ฐ๋ ๋ฐ๋์ X๋ช ์ด์์ผ๋ก ๊ตฌ์ฑํ ๋ชจํ๊ฐ ๊ทธ๋ฃน์ ์ฐธ์ฌํด์ผ ์ฌํ์ ๋ ๋ ์ ์๋๋ก ๊ท์ ํ์ต๋๋ค. ๋๋น์ด๋ ํ๋ ๋ช ๊ฐ์ ๋ชจํ๊ฐ ๊ทธ๋ฃน์ ๋ง๋ค ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค.
** ๋ชจ๋ ๋ชจํ๊ฐ๋ฅผ ํน์ ํ ๊ทธ๋ฃน์ ๋ฃ์ ํ์๋ ์์ต๋๋ค. **
• ์ ๋ ฅ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์ ๋ชจํ๊ฐ์ ์ N์ด ์ฃผ์ด์ง๋ค. ( 1 ≤ N ≤ 100,000 )
- ๋์งธ ์ค์๋ ๊ฐ ๋ชจํ๊ฐ์ ๊ณตํฌ๋ ๊ฐ์ N ์ดํ์ ์์ฐ์๋ก ์ฃผ์ด์ง๋ฉฐ, ๊ฐ ์์ฐ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค.
• ์ถ๋ ฅ์กฐ๊ฑด
- ์ฌํ์ ๋ ๋ ์ ์๋ ๊ทธ๋ฃน ์์ ์ต๋๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.
# ๋ชจํ๊ฐ ๊ธธ๋
n = int(input()) # ๋ชจํ๊ฐ์ ์
arr = list(map(int, input().split())) # ๋ชจํ๊ฐ ๊ธธ๋์ ๊ณตํฌ๋
arr.sort()
count= 0 # ํ์ฌ ๊ทธ๋ฃน์ ํฌํจ๋ ๋ชจํ๊ฐ ์
result = 0 # ๊ทธ๋ฃน ์
for i in arr:
count += 1
if count >= i:
result += 1
count = 0
print(result) # ์ด ๊ทธ๋ฃน ์ ์ถ๋ ฅ
2. ๊ณฑํ๊ธฐ ํน์ ๋ํ๊ธฐ
• ๋ฌธ์
๊ฐ ์๋ฆฌ๊ฐ ์ซ์(0๋ถํฐ 9)๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ด S๊ฐ ์ฃผ์ด์ก์ ๋, ์ผ์ชฝ๋ถํฐ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๋์ฉ ๋ชจ๋ ์ซ์๋ฅผ ํ์ธํ๋ฉฐ ์ซ์ ์ฌ์ด์ 'x' ํน์ '+' ์ฐ์ฐ์๋ฅผ ๋ฃ์ด ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ง๋ค์ด์ง ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
๋จ, + ๋ณด๋ค x๋ฅผ ๋จผ์ ๊ณ์ฐํ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ์๊ณผ๋ ๋ฌ๋ฆฌ, ๋ชจ๋ ์ฐ์ฐ์ ์ผ์ชฝ์์๋ถํฐ ์์๋๋ก ์ด๋ฃจ์ด์ง๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด 02984๋ผ๋ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ฉด, ๋ง๋ค์ด์ง ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ ( ( ( ( 0 + 2 ) x 9 ) x 8 ) x 4 ) = 576 ์ ๋๋ค.
๋ํ ๋ง๋ค์ด์ง ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ ํญ์ 20์ต ์ดํ์ ์ ์๊ฐ ๋๋๋ก ์ ๋ ฅ์ด ์ฃผ์ด์ง๋๋ค.
• ์ ๋ ฅ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์ ์ฌ๋ฌ ๊ฐ์ ์ซ์๋ก ๊ตฌ์ฑ๋ ํ๋์ ๋ฌธ์์ด S๊ฐ ์ฃผ์ด์ง๋๋ค.
• ์ถ๋ ฅ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์ ๋ง๋ค์ด์ง ์ ์๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
# ๊ณฑํ๊ธฐ ํน์ ๋ํ๊ธฐ
s = input()
arr = []
for i in s:
arr.append(int(i))
arr.sort()
result = arr[0]
for i in range(1, len(arr)):
if arr[i] <= 1 or result <= 1:
result += arr[i]
else:
result *= arr[i]
print(result)
3. ๋ฌธ์์ด ๋ค์ง๊ธฐ
• ๋ฌธ์
๋ค์์ด๋ 0๊ณผ 1๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ด S๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ค์์ด๋ ์ด ๋ฌธ์์ด S์ ์๋ ๋ชจ๋ ์ซ์๋ฅผ ์ ๋ถ ๊ฐ๊ฒ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค. ๋ค์์ด๊ฐ ํ ์ ์๋ ํ๋์ S์์ ์ฐ์๋ ํ๋ ์ด์์ ์ซ์๋ฅผ ์ก๊ณ ๋ชจ๋ ๋ค์ง๋ ๊ฒ์ ๋๋ค.
๋ค์ง๋ ๊ฒ์ 1์ 0์ผ๋ก, 0์ 1๋ก ๋ฐ๊พธ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์๋ฅผ ๋ค์ด S = 0001100 ์ผ ๋
1) ์ ์ฒด๋ฅผ ๋ค์ง์ผ๋ฉด 1110011
2) 4๋ฒ์งธ ๋ฌธ์๋ถํฐ 5๋ฒ์งธ ๋ฌธ์๊น์ง ๋ค์ง์ผ๋ฉด 1111111์ด ๋์ด์ ๋ ๋ฒ๋ง์ ๋ชจ๋ ๊ฐ์ ์ซ์๋ก ๋ง๋ค ์ ์์ต๋๋ค.
๋ฌธ์์ด S๊ฐ ์ฃผ์ด์ก์ ๋, ๋ค์์ด๊ฐ ํด์ผ ํ๋ ํ๋์ ์ต์ํ์๋ฅผ ์ถ๋ ฅํ์ธ์.
• ์ ๋ ฅ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์ 0๊ณผ 1๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ด S๊ฐ ์ฃผ์ด์ง๋๋ค. S์ ๊ธธ์ด๋ 100๋ง๋ณด๋ค ์์ต๋๋ค.
• ์ถ๋ ฅ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์ ๋ค์์ด๊ฐ ํด์ผํ๋ ํ๋์ ์ต์ํ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
# ๋ฌธ์์ด ๋ค์ง๊ธฐ
# ๊ฒฝ์ฐ์ ์๋ฅผ ์๊ฐํด์ ๊ฐ์ ํด๋ณด๊ธฐ
data = input()
count0 = 0 # ์ ๋ถ 0์ผ๋ก ๋ฐ๊พธ๋ ๊ฒฝ์ฐ
count1 = 0 # ์ ๋ถ 1๋ก ๋ฐ๊พธ๋ ๊ฒฝ์ฐ
if data[0] == '1': # 1์ด๋ฉด 0์ผ๋ก ๋ฐ๊ฟ์ผํ๊ธฐ ๋๋ฌธ์
count0 += 1
else:
count1 += 1
for i in range(len(data)-1):
if data[i] != data[i+1]:
if data[i+1] == '1':
count0 += 1
else:
count1 += 1
print(min(count0, count1))
4. ๋ง๋ค ์ ์๋ ๊ธ์ก
• ๋ฌธ์
๋๋ค ํธ์์ ์ฃผ์ธ์ธ ๋๋น์ด๋ N๊ฐ์ ๋์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด ๋ N๊ฐ์ ๋์ ์ ์ด์ฉํ์ฌ ๋ง๋ค ์ ์๋ ์์ ์ ์ ๊ธ์ก ์ค ์ต์๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์๋ฅผ ๋ค์ด, N = 5์ด๊ณ , ๊ฐ ๋์ ์ด ๊ฐ๊ฐ 3์, 2์, 1์, 1์, 9์์ง๋ฆฌ (ํํ๋จ์) ๋์ ์ด๋ผ๊ณ ๊ฐ์ ํฉ์๋ค. ์ด ๋ ๋๋น์ด๊ฐ ๋ง๋ค ์ ์๋ ์์ ์ ์ ๊ธ์ก ์ค ์ต์๊ฐ์ 8์์ ๋๋ค.
๋ ๋ค๋ฅธ ์์๋ก, N = 3์ด๊ณ , ๊ฐ ๋์ ์ด ๊ฐ๊ฐ 3์, 5์, 7์์ง๋ฆฌ (ํํ๋จ์) ๋์ ์ด๋ผ๊ณ ๊ฐ์ ํฉ์๋ค. ์ด๋ ๋๋น์ด๊ฐ ๋ง๋ค ์ ์๋ ์์ ์ ์ ๊ธ์ก ์ค ์ต์๊ฐ์ 1์์ ๋๋ค.
• ์ ๋ ฅ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์๋ ๋์ ์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์์ ์ ์ N์ด ์ฃผ์ด์ง๋๋ค.
- ๋์งธ ์ค์๋ ๊ฐ ๋์ ์ ํํ ๋จ์๋ฅผ ๋ํ๋ด๋ N๊ฐ์ ์์ฐ์๊ฐ ์ฃผ์ด์ง๋ฉฐ, ๊ฐ ์์ฐ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค.
• ์ถ๋ ฅ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์ ์ฃผ์ด์ง ๋์ ๋ค๋ก ๋ง๋ค ์ ์๋ ์์ ์ ์ ๊ธ์ก ์ค ์ต์๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.
n = int(input())
data = list(map(int, input().split()))
data.sort()
target = 1
for x in data:
if target < x:
break
target += x
print(target)
5. ๋ณผ๋ง๊ณต ๊ณ ๋ฅด๊ธฐ
• ๋ฌธ์
A, B ๋ ์ฌ๋์ด ๋ณผ๋ง์ ์น๊ณ ์์ต๋๋ค. ๋ ์ฌ๋์ ์๋ก ๋ฌด๊ฒ๊ฐ ๋ค๋ฅธ ๋ณผ๋ง๊ณต์ ๊ณ ๋ฅด๋ ค๊ณ ํฉ๋๋ค. ๋ณผ๋ง๊ณต์ ์ด N๊ฐ๊ฐ ์์ผ๋ฉฐ ๊ฐ ๋ณผ๋ง๊ณต๋ง๋ค ๋ฌด๊ฒ๊ฐ ์ ํ์๊ณ , ๊ณต์ ๋ฒํธ๋ 1๋ฒ๋ถํฐ ์์๋๋ก ๋ถ์ฌ๋ฉ๋๋ค.
๋ํ ๊ฐ์ ๋ฌด๊ฒ์ ๊ณต์ด ์ฌ๋ฌ ๊ฐ ์์ ์ ์์ง๋ง, ์๋ก ๋ค๋ฅธ ๊ณต์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค. ๋ณผ๋ง๊ณต์ ๋ฌด๊ฒ๋ 1๋ถํฐ M๊น์ง์ ์์ฐ์ ํํ๋ก ์กด์ฌํฉ๋๋ค.
์๋ฅผ ๋ค์ด N์ด 5์ด๊ณ M์ด 3์ด๋ฉฐ ๊ฐ๊ฐ์ ๋ฌด๊ฒ๊ฐ ์ฐจ๋ก๋๋ก 1, 3, 2, 3, 2์ผ ๋ ๊ฐ ๊ณต์ ๋ฒํธ๊ฐ ์ฐจ๋ก๋๋ก 1๋ถํฐ 5๋ฒ๊น์ง ๋ถ์ฌ๋ฉ๋๋ค. ์ด ๋ ๋์ฌ๋์ด ๊ณ ๋ฅผ ์ ์๋ ๋ณผ๋ง๊ณต์ ๋ฒํธ ์กฐํฉ์ ๊ตฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ ์ฌ๋์ด ๊ณต์ ๊ณ ๋ฅด๋ ๊ฒฝ์ฐ์ ์๋ 8๊ฐ์ง ์ ๋๋ค. N๊ฐ์ ๊ณต์ ๋ฌด๊ฒ๊ฐ ๊ฐ๊ฐ ์ฃผ์ด์ง ๋, ๋ ์ฌ๋์ด ๋ณผ๋ง๊ณต์ ๊ณ ๋ฅด๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
• ์ ๋ ฅ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์ ๋ณผ๋ง๊ณต์ ๊ฐ์ N, ๊ณต์ ์ต๋ ๋ฌด๊ฒ M์ด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ๊ฐ๊ฐ ์์ฐ์ ํํ๋ก ์ฃผ์ด์ง๋๋ค.
- ๋์งธ ์ค์ ๊ฐ ๋ณผ๋ง๊ณต์ ๋ฌด๊ฒ K๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์์๋๋ก ์์ฐ์ ํํ๋ก ์ฃผ์ด์ง๋๋ค.
• ์ถ๋ ฅ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์ ๋ ์ฌ๋์ด ๋ณผ๋ง๊ณต์ ๊ณ ๋ฅด๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
import itertools
n, m = map(int, input().split())
arr = list(map(int, input().split()))
a = 0
b = 0
for i in itertools.combinations(arr, 2):
if list(i)[0] == list(i)[1]:
b += 1
a += 1
print(a-b)
์ค์ ์ฝํ ์์ ์กฐํฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ธ ์ ์๋์ง ๋ชจ๋ฅด๊ธฐ์ ์์ ๋ต์๋ ์ถ๊ฐํ๋ค.
# ๋ณผ๋ง๊ณต ๊ณ ๋ฅด๊ธฐ ๋ต์
n, m = map(int, input().split())
data = list(map(int, input().split()))
# 1๋ถํฐ 10๊น์ง ๋ฌด๊ฒ๋ฅผ ๋ด์ ์ ์๋ ๋ฆฌ์คํธ
array = [0] * 11
for x in data:
# ๊ฐ ๋ฌด๊ฒ์ ํด๋นํ๋ ๋ณผ๋ง๊ณต์ ๊ฐ์ ์นด์ดํธ
array[x] += 1
result = 0
# 1๋ถํฐ m๊น์ง์ ๊ฐ ๋ฌด๊ฒ์ ๋ํ์ฌ ์ฒ๋ฆฌ
for i in range(1, m+1):
n -= array[i] # ๋ฌด๊ฒ๊ฐ i์ธ ๋ณผ๋ง๊ณต์ ๊ฐ์ (A๊ฐ ์ ํํ ์ ์๋ ๊ฐ์) ์ ์ธ
result += array[i] * n # B๊ฐ ์ ํํ๋ ๊ฒฝ์ฐ์ ์์ ๊ณฑํ๊ธฐ
print(result)
6. ๋ฌด์ง์ ๋จน๋ฐฉ ๋ผ์ด๋ธ
• ๋ฌธ์
ํ์ ์์์ด ์์ฑํ ๋ฌด์ง๋ ์์ ์ ์ฌ๋ฅ์ ๋ฝ๋ด๊ณ ์ถ์ด ์ก๊ณ ๊ณ ๋ฏผ ๋์ ์นด์นด์ค TV ๋ผ์ด๋ธ๋ก ๋ฐฉ์ก์ ํ๊ธฐ๋ก ๋ง์๋จน์๋ค.
๊ทธ๋ฅ ๋จน๋ฐฉ์ ํ๋ฉด ๋ค๋ฅธ ๋ฐฉ์ก๊ณผ ์ฐจ๋ณ์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ๋ฌด์ง๋ ์๋์ ๊ฐ์ด ๋ ํนํ ๋ฐฉ์์ ์๊ฐํด๋๋ค.
๋ฌด์ง๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์์์ ์ญ์ทจํ๋ค.
- ๋ฌด์ง๋ 1๋ฒ ์์๋ถํฐ ๋จน๊ธฐ ์์ํ๋ฉฐ, ํ์ ํ์ ๋ฒํธ๊ฐ ์ฆ๊ฐํ๋ ์์๋๋ก ์์์ ๋ฌด์ง ์์ผ๋ก ๊ฐ์ ธ๋ค ๋๋๋ค.
- ๋ง์ง๋ง ๋ฒํธ์ ์์์ ์ญ์ทจํ ํ์๋ ํ์ ํ์ ์ํด ๋ค์ 1๋ฒ ์์์ด ๋ฌด์ง ์์ผ๋ก ์จ๋ค.
- ๋ฌด์ง๋ ์์ ํ๋๋ฅผ 1์ด ๋์ ์ญ์ทจํ ํ ๋จ์ ์์์ ๊ทธ๋๋ก ๋๊ณ , ๋ค์ ์์์ ์ญ์ทจํ๋ค.
- ๋ค์ ์์์ด๋, ์์ง ๋จ์ ์์ ์ค ๋ค์์ผ๋ก ์ญ์ทจํด์ผ ํ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฒํธ์ ์์์ ๋งํ๋ค.
- ํ์ ํ์ด ๋ค์ ์์์ ๋ฌด์ง ์์ผ๋ก ๊ฐ์ ธ์ค๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์๋ค๊ณ ๊ฐ์ ํ๋ค.
๋ฌด์ง๊ฐ ๋จน๋ฐฉ์ ์์ํ ์ง K ์ด ํ์ ๋คํธ์ํฌ ์ฅ์ ๋ก ์ธํด ๋ฐฉ์ก์ด ์ ์ ์ค๋จ๋์๋ค.
๋ฌด์ง๋ ๋คํธ์ํฌ ์ ์ํ ํ ๋ค์ ๋ฐฉ์ก์ ์ด์ด๊ฐ ๋, ๋ช ๋ฒ ์์๋ถํฐ ์ญ์ทจํด์ผ ํ๋์ง๋ฅผ ์๊ณ ์ ํ๋ค.
๊ฐ ์์์ ๋ชจ๋ ๋จน๋๋ฐ ํ์ํ ์๊ฐ์ด ๋ด๊ฒจ์๋ ๋ฐฐ์ด food_times, ๋คํธ์ํฌ ์ฅ์ ๊ฐ ๋ฐ์ํ ์๊ฐ K ์ด๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ ๋ช ๋ฒ ์์๋ถํฐ ๋ค์ ์ญ์ทจํ๋ฉด ๋๋์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ๋ผ.
์ ํ์ฌํญ
- food_times ๋ ๊ฐ ์์์ ๋ชจ๋ ๋จน๋๋ฐ ํ์ํ ์๊ฐ์ด ์์์ ๋ฒํธ ์์๋๋ก ๋ค์ด์๋ ๋ฐฐ์ด์ด๋ค.
- k ๋ ๋ฐฉ์ก์ด ์ค๋จ๋ ์๊ฐ์ ๋ํ๋ธ๋ค.
- ๋ง์ฝ ๋ ์ญ์ทจํด์ผ ํ ์์์ด ์๋ค๋ฉด -1์ ๋ฐํํ๋ฉด ๋๋ค.
์ ํ์ฑ ํ ์คํธ ์ ํ ์ฌํญ
- food_times ์ ๊ธธ์ด๋ 1 ์ด์ 2,000 ์ดํ์ด๋ค.
- food_times ์ ์์๋ 1 ์ด์ 1,000 ์ดํ์ ์์ฐ์์ด๋ค.
- k๋ 1 ์ด์ 2,000,000 ์ดํ์ ์์ฐ์์ด๋ค.
ํจ์จ์ฑ ํ ์คํธ ์ ํ ์ฌํญ
- food_times ์ ๊ธธ์ด๋ 1 ์ด์ 200,000 ์ดํ์ด๋ค.
- food_times ์ ์์๋ 1 ์ด์ 100,000,000 ์ดํ์ ์์ฐ์์ด๋ค.
- k๋ 1 ์ด์ 2 x 10^13 ์ดํ์ ์์ฐ์์ด๋ค.
์ ์ถ๋ ฅ ์
food_times [ 3, 1, 2 ]
k 5
result 1
- 0~1์ด ๋์์ 1๋ฒ ์์์ ์ญ์ทจํ๋ค. ๋จ์ ์๊ฐ์ [2,1,2] ์ด๋ค.
- 1~2์ด ๋์ 2๋ฒ ์์์ ์ญ์ทจํ๋ค. ๋จ์ ์๊ฐ์ [2,0,2] ์ด๋ค.
- 2~3์ด ๋์ 3๋ฒ ์์์ ์ญ์ทจํ๋ค. ๋จ์ ์๊ฐ์ [2,0,1] ์ด๋ค.
- 3~4์ด ๋์ 1๋ฒ ์์์ ์ญ์ทจํ๋ค. ๋จ์ ์๊ฐ์ [1,0,1] ์ด๋ค.
- 4~5์ด ๋์ (2๋ฒ ์์์ ๋ค ๋จน์์ผ๋ฏ๋ก) 3๋ฒ ์์์ ์ญ์ทจํ๋ค. ๋จ์ ์๊ฐ์ [1,0,0] ์ด๋ค.
- 5์ด์์ ๋คํธ์ํฌ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ค. 1๋ฒ ์์์ ์ญ์ทจํด์ผ ํ ๋ ์ค๋จ๋์์ผ๋ฏ๋ก, ์ฅ์ ๋ณต๊ตฌ ํ์ 1๋ฒ ์์๋ถํฐ ๋ค์ ๋จน๊ธฐ ์์ํ๋ฉด ๋๋ค.
import heapq
def solution(food_times, k):
# ์์์ ๋ค ๋จน์ ๊ฒฝ์ฐ ๋ ๋จน์ ๊ฒ์ด ์์ ๋
if sum(food_times) <= k:
return -1
q = []
for i in range(len(food_times)):
# (์์์๊ฐ, ์์ ๋ฒํธ) ํํ๋ก ์ฐ์ ์์ ํ์ ์ฝ์
heapq.heappush(q, (food_times[i], i+1))
sum_value = 0 # ๋จน๊ธฐ ์ํด ์ฌ์ฉํ ์๊ฐ
previous = 0 # ์ง์ ์ ๋ค ๋จน์ ์์ ์๊ฐ
length = len(food_times) # ๋จ์ ์์ ๊ฐ์
while sum_value + ((q[0][0] - previous)*length) <= k:
now = heapq.heappop(q)[0]
sum_value += (now-previous) * length
length -= 1
previous = now # ์ด์ ์์ ์๊ฐ ์ฌ์ค์
result = sorted(q, key = lambda x : x[1]) # ์์ ๋ฒํธ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
return result[(k-sum_value)%length][1]
'๐ตCoding Test > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค Level 2 (0) | 2022.06.19 |
---|---|
[ ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค with ํ์ด์ฌ ] ๊ธฐํ ๊ทธ๋ํ ์ด๋ก (0) | 2022.06.15 |
[ ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค with ํ์ด์ฌ ] ์ต๋จ ๊ฒฝ๋ก (0) | 2022.05.02 |
[ ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค with ํ์ด์ฌ ] ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ (0) | 2022.04.29 |
[ ์ด๊ฒ์ด ์ฝ๋ฉํ ์คํธ๋ค with ํ์ด์ฌ ] ์ด์ง ํ์ (0) | 2022.03.23 |