๋ฌธ์
programmers.co.kr/learn/courses/30/lessons/60062
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ธ๋ฒฝ ์ ๊ฒ
๋ ์คํ ๋์ ์ด์ํ๊ณ ์๋ ์ค์นดํผ๋ ๋ ์คํ ๋ ๋ด๋ถ๊ฐ ๋๋ฌด ๋ก์ ์น๊ตฌ๋ค๊ณผ ํจ๊ป ์ง์ ๋ฆฌ๋ชจ๋ธ๋ง ํ๊ธฐ๋ก ํ์ต๋๋ค. ๋ ์คํ ๋์ด ์๋ ๊ณณ์ ์ค๋ ธ์ฐํ์ด์ผ๋ก ๋งค์ฐ ์ถ์ด ์ง์ญ์ด์ด์ ๋ด๋ถ ๊ณต์ฌ๋ฅผ ํ๋
programmers.co.kr
ํ์ด
๊ฐ์ธ์ ์ผ๋ก ์ด๋ ค์ด ๋ฌธ์ ์๋ค. ์์ด์ ์ด์ฉํ Brute Force ๋ฌธ์ ์ด๋ค.
์นด์นด์ค ๋ฌธ์ ๋ ์ญ์ ์ด๋ ต๋ค.. ํ์ด ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค.
์ฐ์ ์์์ ์ ์ ํด์ผํ๋ค. ์์ด๋ฏ๋ก ๋ฐฐ์ด์๋ค๊ฐ n์ ๋ํ weak_point ๋ฐฐ์ด์ ์๋กญ๊ฒ ๋ง๋ค์ด์ค๋ค.
๊ทธ ๋ค์ ์์์ ์์๋ถํฐ, ๊ฐ๋ฅํ ๋ชจ๋ ์์ด(dist์ ์กฐํฉ)์ permutations()๋ฅผ ํตํด ๊ณ์ฐํ๊ณ , ๋ชจ๋ weak point๋ฅผ ์ปค๋ฒํ ์ ์๋์ง ํ์ธํ๋ฉฐ ์ต์๊ฐ์ ๊ฐฑ์ ํด ๋๊ฐ๋ค.
from itertools import permutations
def solution(n, weak, dist):
INF = 987654321
answer = INF
weak_point = weak + [ w + n for w in weak ]
L = len(weak)
# ์์์
for (idx, start) in enumerate(weak):
# ๊ฐ๋ฅํ ๋ชจ๋ ์ผ์ด์ค์ ์์ด
for p in permutations(dist):
count = 1
pos = start
for d in p:
pos += d
if pos >= weak_point[idx + L - 1]:
answer = min(answer, count)
else:
pos = [w for w in weak_point if w > pos][0]
count += 1
return -1 if answer == INF else answer'Problem Solving ๐ฅ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฉ๋ฌธ ๊ธธ์ด / ํ์ด์ฌ (0) | 2021.01.24 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ผ๊ทผ ์ง์ / ํ์ด์ฌ (0) | 2021.01.24 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ๊ธฐ๋ฅ๊ณผ ๋ณด ์ค์น / ํ์ด์ฌ / (์งํฉ) (0) | 2021.01.23 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ๊ฐ์ฅ ๋จผ ๋ ธ๋ / ํ์ด์ฌ (0) | 2021.01.19 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ์์ / ํ์ด์ฌ (0) | 2021.01.19 |