1. ๋ฌธ์ ์ค๋ช
ํด๋ํฐ์ ์ํ์ ์ปดํจํฐ ํค๋ณด๋ ์ํ๊ณผ๋ ๋ค๋ฅด๊ฒ ํ๋์ ํค์ ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์๊ฐ ํ ๋น๋ ์ ์์ต๋๋ค. ํค ํ๋์ ์ฌ๋ฌ ๋ฌธ์๊ฐ ํ ๋น๋ ๊ฒฝ์ฐ, ๋์ผํ ํค๋ฅผ ์ฐ์ํด์ ๋น ๋ฅด๊ฒ ๋๋ฅด๋ฉด ํ ๋น๋ ์์๋๋ก ๋ฌธ์๊ฐ ๋ฐ๋๋๋ค.
์๋ฅผ ๋ค์ด, 1๋ฒ ํค์ "A", "B", "C" ์์๋๋ก ๋ฌธ์๊ฐ ํ ๋น๋์ด ์๋ค๋ฉด 1๋ฒ ํค๋ฅผ ํ ๋ฒ ๋๋ฅด๋ฉด "A", ๋ ๋ฒ ๋๋ฅด๋ฉด "B", ์ธ ๋ฒ ๋๋ฅด๋ฉด "C"๊ฐ ๋๋ ์์ ๋๋ค.
๊ฐ์ ๊ท์น์ ์ ์ฉํด ์๋ฌด๋ ๊ฒ๋ ๋ง๋ ํด๋ํฐ ์ํ์ด ์์ต๋๋ค. ์ด ํด๋ํฐ ์ํ์ ํค์ ๊ฐ์๊ฐ 1๊ฐ๋ถํฐ ์ต๋ 100๊ฐ๊น์ง ์์ ์ ์์ผ๋ฉฐ, ํน์ ํค๋ฅผ ๋๋ ์ ๋ ์ ๋ ฅ๋๋ ๋ฌธ์๋ค๋ ๋ฌด์์๋ก ๋ฐฐ์ด๋์ด ์์ต๋๋ค. ๋, ๊ฐ์ ๋ฌธ์๊ฐ ์ํ ์ ์ฒด์ ์ฌ๋ฌ ๋ฒ ํ ๋น๋ ๊ฒฝ์ฐ๋ ์๊ณ , ํค ํ๋์ ๊ฐ์ ๋ฌธ์๊ฐ ์ฌ๋ฌ ๋ฒ ํ ๋น๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ์ฌ์ง์ด ์์ ํ ๋น๋์ง ์์ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ช๋ช ๋ฌธ์์ด์ ์์ฑํ ์ ์์ ์๋ ์์ต๋๋ค.
์ด ํด๋ํฐ ์ํ์ ์ด์ฉํด ํน์ ๋ฌธ์์ด์ ์์ฑํ ๋, ํค๋ฅผ ์ต์ ๋ช ๋ฒ ๋๋ฌ์ผ ๊ทธ ๋ฌธ์์ด์ ์์ฑํ ์ ์๋์ง ์์๋ณด๊ณ ์ ํฉ๋๋ค.
1๋ฒ ํค๋ถํฐ ์ฐจ๋ก๋๋ก ํ ๋น๋ ๋ฌธ์๋ค์ด ์์๋๋ก ๋ด๊ธด ๋ฌธ์์ด๋ฐฐ์ด keymap๊ณผ ์ ๋ ฅํ๋ ค๋ ๋ฌธ์์ด๋ค์ด ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด targets๊ฐ ์ฃผ์ด์ง ๋, ๊ฐ ๋ฌธ์์ด์ ์์ฑํ๊ธฐ ์ํด ํค๋ฅผ ์ต์ ๋ช ๋ฒ์ฉ ๋๋ฌ์ผ ํ๋์ง ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
๋จ, ๋ชฉํ ๋ฌธ์์ด์ ์์ฑํ ์ ์์ ๋๋ -1์ ์ ์ฅํฉ๋๋ค.
์ ํ์ฌํญ
- 1 ≤ keymap์ ๊ธธ์ด ≤ 100
- 1 ≤ keymap์ ์์์ ๊ธธ์ด ≤ 100
- keymap[i]๋ i + 1๋ฒ ํค๋ฅผ ๋๋ ์ ๋ ์์๋๋ก ๋ฐ๋๋ ๋ฌธ์๋ฅผ ์๋ฏธํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด keymap[0] = "ABACD" ์ธ ๊ฒฝ์ฐ 1๋ฒ ํค๋ฅผ ํ ๋ฒ ๋๋ฅด๋ฉด A, ๋ ๋ฒ ๋๋ฅด๋ฉด B, ์ธ ๋ฒ ๋๋ฅด๋ฉด A ๊ฐ ๋ฉ๋๋ค.
- keymap์ ์์์ ๊ธธ์ด๋ ์๋ก ๋ค๋ฅผ ์ ์์ต๋๋ค.
- keymap์ ์์๋ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- 1 ≤ targets์ ๊ธธ์ด ≤ 100
- 1 ≤ targets์ ์์์ ๊ธธ์ด ≤ 100
- targets์ ์์๋ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
2. ์ถ๋ ฅ ์์

3. ๋ฌธ์ ๋ต์
def solution(keymap, targets):
answer = []
for idx, target in enumerate(targets):
final_cnts = [] # ์ต์๊ฐ ๋ด๋ ๋ฆฌ์คํธ
is_possible = True # target ์์ฑ ๊ฐ๋ฅ ์ฌ๋ถ
for c, char in enumerate(target):
cnts = [] # ํ ๋ฌธ์๋น ํค ๋๋ฅด๋ ํ์ ๋น๊ต๋ฅผ ์ํ ๋ฆฌ์คํธ
cnt = 0 # ํค ๋๋ฅด๋ ํ์
for idx_k, keys in enumerate(keymap):
for k, key in enumerate(keys):
if char == key: # char์ด ํค๋งต์ ์กด์ฌ
cnt = k+1
cnts.append(cnt)
if len(cnts) > 0 : # ํ๋๋ผ๋ ํค๋งต์ ์๋ ๊ฒฝ์ฐ
final_cnts.append(min(cnts))
else: # ๋ชจ๋ ํค๋งต์ ๋ฌธ์์ด์ด ์๋ ๊ฒฝ์ฐ(ํ๋ณด๊ตฐ X)
is_possible = False
break
if is_possible:
answer.append(sum(final_cnts))
else:
answer.append(-1)
return answer'๐ฅ๏ธ ์ฝ๋ฉํ ์คํธ > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] [Python] ๋ง์น ํ๊ธฐ (0) | 2026.03.09 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค] [Python] ๋ฐํํ๋ฉด ์ ๋ฆฌ (0) | 2026.03.09 |
| [ํ๋ก๊ทธ๋๋จธ์ค] [Python] ๊ณต์ ์ฐ์ฑ (0) | 2026.03.09 |
| [ํ๋ก๊ทธ๋๋จธ์ค] [Python] ์ถ์ต ์ ์ (0) | 2026.03.09 |
| [ํ๋ก๊ทธ๋๋จธ์ค] [Python] ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ (0) | 2026.03.09 |