D3
Problem
SW Expert Academy ์ ๊ธฐ๋ฒ์ค
SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com
Solution
1. ์ ๊ฑฐ์ฅ ๋ฐฐ์ด์ ๋ง๋ค์ด ์ถฉ์ ์๋ฅผ ์ ์ฅํ๋ค.(์ถฉ์ ์๋ฅผ ์ธ๋ฑ์ค๋ก ํ์ฌ ์ถฉ์ ์๊ฐ ์์ผ๋ฉด 1 ์์ผ๋ฉด 0)
2. ์ด๋ ํ ์ถฉ์ ์์ ์์น๋ฅผ ํ์ธํ๊ณ , ์ถฉ์ ์๊ฐ ์ถฉ๋ถํ ๊ฑฐ๋ฆฌ๋งํผ ์์นํ์ง ์์ผ๋ฉด 0, ์๋๋ฉด ์ต์ ์ถฉ์ ํ์๋ฅผ ์ถ๋ ฅํ๋ค.
3. ๋ง์ฝ ์ถฉ์ ์๊ฐ ์ถฉ๋ถํ ๊ฑฐ๋ฆฌ ๋ด์ ์์๋ค๋ฉด, ๊ฐ์ฅ ๋ง์ง๋ง ์ถฉ์ ์์์ ์ถฉ์ ํ ๊ฒ์ผ๋ก ๊ฐ์ ํ๊ณ ์์น๋ฅผ ๋ง์ง๋ง ์ถฉ์ ์๋ก ์ง์ ํ๋ค.
Code
for test_case in range(1, int(input()) + 1):
K, N, M = map(int, input().split())
charge_list = list(map(int, input().split()))
# ์ ๊ฑฐ์ฅ ๋ฐฐ์ด ๋ง๋ค๊ธฐ
N_list = [0] * (N + K)
# ์ ๊ฑฐ์ฅ์ ์ถฉ์ ์ ์ค์น
for i in charge_list:
N_list[i] += 1
i = count = 0
# ์ถฉ์ ํ ํ ๊ฑฐ๋ฆฌ๊ฐ ์ถฉ๋ถํ๋ฉด ๋ฉ์ถค
while i+K < N:
# ๋ง์ฝ ์ด๋ํ ์ ์๋ ์ ๊ฑฐ์ฅ ์์ ์ถฉ์ ์๊ฐ ์์ผ๋ฉด ์ถฉ์
for j in range(i+K, i, -1):
if N_list[j] == 1:
# ์ถฉ์ ํ์ +
count += 1
break
else:
# ์ฃผํ ๊ฐ๋ฅ ๊ฑฐ๋ฆฌ ์ค ์ถฉ์ ์๊ฐ ์์ผ๋ฉด ํ์๋ฅผ 0์ผ๋ก ์ด๊ธฐํ
count = 0
break
# ์์ง์ผ ์ ์๋ ๊ธฐ์ค ์ด๊ธฐํ
# ๋ฐ๋ณต์ ๊ฑฐ๊พธ๋ก ๋๋ ค ๊ฐ์ฅ ๋ง์ง๋ง์์ ๊ฐ๊น์ด ์ถฉ์ ์์์ ์ถฉ์ ํ ์ดํ
i = j
# ์ถฉ์ ํ์ ์ถ๋ ฅ
print(f'#{test_case} {count}')
<๋ถ์กฑํ ๋ถ๋ถ์ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๋ฉด ์ ์๊ฒ ๋์์ด ๋ฉ๋๋ค!>
๋ฐ์ํ
'๐ STUDY > ์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 9490. ํ์ ํก (2) | 2023.03.05 |
|---|---|
| 1208. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 1์ผ์ฐจ - Flatten (0) | 2023.03.05 |
| 16180. 4834. [ํ์ด์ฌ S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 1์ผ์ฐจ - ์ซ์ ์นด๋ (0) | 2023.03.05 |
| 1206. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 1์ผ์ฐจ - View (0) | 2023.03.05 |
| 16504. Gravity (0) | 2023.03.05 |