๐Today Code Test
[1] ํฐ ์์ ๋ฒ์น ๐ข
๋๋น์ด์ ํฐ ์์ ๋ฒ์น์ ๋ค์ํ ์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ด ์์ ๋ ์ฃผ์ด์ง ์๋ค์ M๋ฒ ๋ํ์ฌ ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ง๋๋ ๋ฒ์น์ด๋ค. ๋จ, ๋ฐฐ์ด์ ํน์ ํ ์ธ๋ฑ์ค์ ํด๋นํ๋ ์๊ฐ ์ฐ์ํด์ K๋ฒ์ ์ถ๊ฐํ์ฌ ๋ํด์ง ์ ์๋ ๊ฒ์ด ์ด ๋ฒ์น์ ํน์ง์ด๋ค.
๋ฐฐ์ด์ ํฌ๊ธฐ N, ์ซ์๊ฐ ๋ํด์ง๋ ํ์ M, ๊ทธ๋ฆฌ๊ณ K๊ฐ ์ฃผ์ด์ง ๋ ๋๋น์ด์ ํฐ ์์ ๋ฒ์น์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ์์ค.
์ ๋ ฅ ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์ N(2≤ N ≤ 1,000), M(1≤ M ≤ 10,000), K(1≤ K ≤10,000)์ ์์ฐ์๊ฐ ์ฃผ์ด์ง๋ฉฐ, ๊ฐ ์์ฐ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ๋ค.
- ๋์งธ ์ค์ N๊ฐ์ ์์ฐ์๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ์์ฐ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ๋ค. ๋จ, ๊ฐ๊ฐ์ ์์ฐ์๋ 1 ์ด์ 10,000 ์ดํ์ ์๋ก ์ฃผ์ด์ง๋ค.
- ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ K๋ ํญ์ M๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
์ถ๋ ฅ ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์ ๋๋น์ด์ ํฐ ์์ ๋ฒ์น์ ๋ฐ๋ผ ๋ํด์ง ๋ต์ ์ถ๋ ฅํ๋ค.
๐ Problem Approach
โ ํฐ ์๋ฅผ ๋ง๋๋ ค๋ฉด? → ๋ฐฐ์ด ์ ํฐ ์๋ฅผ ๋ํด์ผ → ๋ฐฐ์ด์์ ํฐ ์๋ฅผ ์ฐพ์ผ๋ ค๋ฉด? → ์ ๋ ฌํด์ผ
โ ์ฐ์ํด์ K๋ฒ์ ๋ฐฐ์ด ์ ์ ์ผ ํฐ ์๋ฅผ ๋ํ๊ณ → ๊ทธ ๋ค์ ํฐ ์๋ฅผ ํ ๋ฒ ๋ํ๊ณ (์ต๋ ์ฐ์ ๊ฐ ์ค์ ๋๋ฌธ) → ๋ค์ ํฐ ์๋ก
๐Solution
N,M,K = map(int, input().split())
array = sorted(list(map(int, input().split()))[:N])
total = 0
cnt = 0
for i in range(M):
if cnt < K:
cnt += 1
total += array[-1]
else:
cnt = 0
total += array[-2]
print(total)
[2] ์ซ์ ์นด๋ ๊ฒ์ ๐ข
์ซ์ ์นด๋ ๊ฒ์์ ์ฌ๋ฌ ๊ฐ์ ์ซ์ ์นด๋ ์ค์์ ๊ฐ์ฅ ๋์ ์ซ์๊ฐ ์ฐ์ธ ์นด๋ ํ ์ฅ์ ๋ฝ๋ ๊ฒ์์ด๋ค.
๋จ, ๊ฒ์์ ๋ฃฐ์ ์งํค๋ฉฐ ์นด๋๋ฅผ ๋ฝ์์ผ ํ๊ณ , ๋ฃฐ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ซ์๊ฐ ์ฐ์ธ ์นด๋๋ค์ด N x M ํํ๋ก ๋์ฌ ์๋ค. ์ด๋ N์ ํ์ ๊ฐ์๋ฅผ ์๋ฏธํ๋ฉฐ, M์ ์ด์ ๊ฐ์๋ฅผ ์๋ฏธํ๋ค.
- ๋จผ์ ๋ฝ๊ณ ์ ํ๋ ์นด๋๊ฐ ํฌํจ๋์ด ์๋ ํ์ ์ ํํ๋ค.
- ๊ทธ๋ค์ ์ ํ๋ ํ์ ํฌํจ๋ ์นด๋๋ค ์ค ๊ฐ์ฅ ์ซ์๊ฐ ๋ฎ์ ์นด๋๋ฅผ ๋ฝ์์ผ ํ๋ค.
- ๋ฐ๋ผ์ ์ฒ์์ ์นด๋๋ฅผ ๊ณจ๋ผ๋ผ ํ์ ์ ํํ ๋, ์ดํ์ ํด๋น ํ์์ ๊ฐ์ฅ ์ซ์๊ฐ ๋ฎ์ ์นด๋๋ฅผ ๋ฝ์ ๊ฒ์ ๊ณ ๋ คํ์ฌ ์ต์ข ์ ์ผ๋ก ๊ฐ์ฅ ๋์ ์ซ์์ ์นด๋๋ฅผ ๋ฝ์ ์ ์๋๋ก ์ ๋ต์ ์ธ์์ผ ํ๋ค.
N x M ํํ๋ก ๋์ฌ์์ ๋, ๊ฒ์์ ๋ฃฐ์ ๋ง๊ฒ ์นด๋๋ฅผ ๋ฝ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋์์ค.
์ ๋ ฅ ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์ ์ซ์ ์นด๋๋ค์ด ๋์ธ ํ์ ๊ฐ์ N๊ณผ ์ด์ ๊ฐ์ M์ด ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ํ์ฌ ๊ฐ๊ฐ ์์ฐ์๋ก ์ฃผ์ด์ง๋ค. (1 ≤ N, M ≤ 100)
- ๋์งธ ์ค๋ถํฐ N ๊ฐ์ ์ค์ ๊ฑธ์ณ ๊ฐ ์นด๋์ ์ ํ ์ซ์๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ์ซ์๋ 1 ์ด์ 10,000 ์ดํ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ ์กฐ๊ฑด
- ์ฒซ์งธ ์ค์ ๊ฒ์์ ํ์ ๋ง๊ฒ ์ ํํ ์นด๋์ ์ ํ ์ซ์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ Problem Approach
โ ํ ๋ณ๋ก ๊ฐ์ฅ ์์ ์ ์ ํ → ๊ทธ ์ค์์ ๊ฐ์ฅ ํฐ ์๊ฐ ๋ฌธ์ ๊ฐ ์ํ๋ ๋ต
โ ํ์ด ๋์ด๊ฐ ๋ ๋ง๋ค local min๊ฐ์ด ์ด์ min ๊ฐ ๋ณด๋ค ํฌ๋ค๋ฉด result ๋ณ๊ฒฝ
๐Solution
N,M = map(int, input().split())
cards = [sorted(list(map(int, input().split()))[:M]) for i in range(N)]
result = cards[0][0]
for i in range(1,N):
if cards[i][0] > result:
result = cards[i][0]
print(result)
'Code > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์ฝํ ] Implementation _ ์๋ฌผ์ ์ ์ด์ (0) | 2023.05.21 |
---|---|
[์ด์ฝํ ] Implementation _ ๋ฌธ์์ด ์์ถ (0) | 2023.05.06 |
[์ด์ฝํ ] 4์ผ์ฐจ Greedy _ ๋ง๋ค ์ ์๋ ๊ธ์ก, ๋ณผ๋ง๊ณต ๊ณ ๋ฅด๊ธฐ (0) | 2022.05.09 |
[์ด์ฝํ ] 3์ผ์ฐจ Greedy _ ๋ฌธ์์ด ๋ค์ง๊ธฐ (0) | 2022.05.07 |
[์ด์ฝํ ] 2์ผ์ฐจ Greedy_1์ด ๋ ๋๊น์ง, ๋ชจํ๊ฐ ๊ธธ๋, ๊ณฑํ๊ธฐ ํน์ ๋ํ๊ธฐ (0) | 2022.05.06 |
๋๊ธ