-
[Programmers] ์ธ๋ฒฝ ์ ๊ฒ with PythonPS 2021. 12. 6. 21:43728x90๋ฐ์ํ
๐ Programmers - [์ธ๋ฒฝ ์ ๊ฒ]
๐ก ์กฐ๊ฑด
์ธ๋ฒฝ์ ์ด ๋๋ ๊ธธ์ด
(1 <= n <= 200)
์ทจ์ฝ ์ง์ ์ ์์น๊ฐ ๋ด๊ธด ๋ฐฐ์ด(1< = weak <= 15)
- ์๋ก ๋ค๋ฅธ ๋ ์ทจ์ฝ์ ์ ์์น๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ ์๋ค.
- ์ทจ์ฝ์ง์ ์ ์์น๋ ์ค๋ฆ์ฐจ์์ด๋ค.
(0 <= weak์ ์์ <= n-1)
์น๊ตฌ๊ฐ 1์๊ฐ ๋์ ์ด๋ํ ์ ์๋ ๊ฑฐ๋ฆฌ
(1<= dist <= 8)
์น๊ตฌ๋ค์ ์ต์ํ์ผ๋ก ํฌ์ ์์ผ์ ์ธ๋ฒฝ ์ ๊ฒ์ ํด์ผํ๋ค.
๋ง์ฝ ์น๊ตฌ๋ค์ด ๋ชจ๋ ํฌ์ ๋์ด๋ ์ธ๋ฒฝ์ ๋ชจ๋ ์ ๊ฒํ ์ ์๋ค๋ฉด,-1
์ ์ถ๋ ฅ.์์ด, ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from itertools import permutations def solution(n, weak, dist): leng = len(weak) for x in range(leng): weak.append(weak[x] + n) answer = len(dist) + 1 for start in range(leng): for friends in list(permutations(dist, len(dist))): count = 0 position = weak[start] - friends[count - 1] for index in range(start, start + leng): if position < weak[index]: count += 1 if count > len(dist): break position = weak[index] + friends[count - 1] answer = min(answer, count) if answer > len(dist): return -1 return answer
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
print(solution(12, [1, 5, 6, 10], [1, 2, 3, 4], 2))
์คํ๊ฒฐ๊ณผ
2
โจ๏ธ ๋ฌธ์ ํ์ด
์ ๊ฒ ํด์ผํ ์ธ๋ฒฝ์ ๊ธธ์ด๋ฅผ ๊ตฌํ๊ธฐ ์ํด
weak
์ ๊ธธ์ด๋ฅผleng
์ด๋ผ๋ ๋ณ์์ ๋ด์์ค๋ค.์ด
n
๋งํผ์ ์ธ๋ฒฝ์ด ์์ผ๋,weak
์ ๊ธธ์ด๋งํผ ์ํํ๋ฉด์weak
์ ์์์ n์ ๋ํ์ฌ
์ํ ๋ชจ์์ ์ธ๋ฒฝ์ ํผ์ณ์ค๋ค๊ณ ์๊ฐํ์.answer
์ ๊ฐ์ ์ ๊ฒ์ ํฌ์ ํ ์ ์๋ ์น๊ตฌ๋ค์ ์(dist
์ ๊ธธ์ด)๋ณด๋ค1
๋ง๊ฒ ์ ์ฅํ๋ค.
์ด ๊ณผ์ ์ด ์์ด์ผ ๋ชจ๋ ํฌ์ ์์ผ๋ ์๋ ๋-1
์ ์ถ๋ ฅํ๊ฒ ํ ์ ์๋ค.์ทจ์ฝ์ ์ด๋์๋ถํฐ ์์ํ ์ง์ ๋ฐ๋ผ์ ์ธ์์ ์๊ฐ ์ ์ด์ง ์๋, ๋ง์์ง ์๋ ์๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์start(์ถ๋ฐ์ง์ )
์weak
์ ๊ธธ์ด๋งํผ ์ํ์์ผ ๋๊ฒํ๊ณ ,์น๊ตฌ๋ค์ด ํฌ์ ๋ ์์๋
permutations
ํจ์๋ฅผ ํตํด ๋ณ๊ฒฝํ๋ค.
count = 0
์ผ๋ก ์ด๊ธฐํ ํ ๋ค,position
์ ์ ํ๋ค.
์ทจ์ฝ์ ๋ฐฐ์ด์์start
๋ฒ์งธ์์
์น๊ตฌ๋ค์ 1์๊ฐ๋์ ์ด๋๊ฑฐ๋ฆฌ๋ฅผpermutations
๋ก ๋ฝ์๋ธ ๋ฐฐ์ด์count - 1
๋ฒ์งธ์ ๊ฐ์
๋นผ์ค ๊ฒ์ดposition
๊ฐ์ด๋ค.๊ทธ๋ ๋ค๋ฉด,
์ทจ์ฝ์ ์์๋ถ๋ถ(start)
๋ถํฐ์ทจ์ฝ์ ์์๋ถ๋ถ(start) + ์ทจ์ฝ์ ์ ๊ฐ์(leng)
๊น์ง ์ํํ๋ฉด์(index)
ํ์ฌ ํฌ์ง์ ๊ฐ์ด ์ทจ์ฝ์ ๋ฐฐ์ด์index
์ ํด๋นํ๋ ๊ฐ๋ณด๋ค ์๋ค๋ฉดcount += 1
์ ํด์ค๋ค.count
๊ฐ ํน์ ์น๊ตฌ์ ์๋ฅผ ๋์๋ค๋ฉด ๋ฐ๋ก ์ค๋จํ๋ค.
๊ทธ๊ฒ ์๋๋ผ๋ฉด ์์ ์ ํ ํ,position์ ๊ฐฑ์
ํ๋ค.answer
์count
์ค์ ๊ฐ์ฅ ์์ ๊ฒ์answer
์ ๋ด์ ๊ฐฑ์ ํ ๋ค,answer
๊ฐdist์ ๊ธธ์ด
๋ณด๋ค ํฌ๋ค๋ฉด-1์ ๋ฐํ
ํ๊ณ
๊ทธ๊ฒ ์๋๋ผ๋ฉดanswer๋ฅผ ๋ฐํ
ํ๋ค.
๐พ ๋๋์
- ์ธ๋ฒฝ์ ํ๋ฉด์ผ๋ก ํผ์น ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆฌ์ง ๋ชปํ๊ณ ํด์ค์ ๋ณธ ํ ํฐ ์ถฉ๊ฒฉ์ ๋ฐ์๋ค.
- ์ดํ, ์ธ๋ฒฝ ์ ์ ์ ํด์ผํ ์ทจ์ฝ์ ์ค ํ ๋ถ๋ถ์ ๊ณจ๋ผ ์ทจ์ฝ์ ์ ๊ธธ์ด๋งํผ ์ ๊ฒํ๋ ๋ก์ง์ ๊ตฌํํ๋๋ฐ์
๋ง์ ๋ ธ๋ ฅ๊ณผ ๊ธด ์๊ฐ์ด ํ์ํ๋ค. - ์ค์ค๋ก ๊ตฌํ์ด ์ฝํ๋ค๋ ๊ฒ์ ์๊ณ ์๋ค. ์กฐ๊ธ ๋ ๊ตฌํํ ๋ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๊ธ ์ค๊ณํ๊ณ , ์งง์๋ ๊ตฌํ๊ณํ์ ์จ๋ด๋ ค๊ฐ์ผ๊ฒ ๋ค.
- ์ค์ค๋ก ๊ฒ์ฆํ๋ ๋ถ๋ถ์์ ํฐ ์ฝ์ ์ด ์๋ค๋ ๊ฒ์ ๋๊ผ๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1411 ๋น์ทํ ๋จ์ด with Python (0) 2021.12.12 [Programmers] ๋ธ๋ก ์ด๋ํ๊ธฐ with Python (0) 2021.12.12 [๋ฐฑ์ค] 11497 ํต๋๋ฌด ๊ฑด๋๋ฐ๊ธฐ with Python (0) 2021.12.06 [๋ฐฑ์ค] 6118 ์จ๋ฐ๊ผญ์ง with Python (0) 2021.12.01 [๋ฐฑ์ค] 2841 ์ธ๊ณ์ธ์ ๊ธฐํ ์ฐ์ฃผ with Python (0) 2021.12.01