๐ ๋ฐฑ์ค 20436 - ZOAC 3
โก๏ธ ๋์ ํ์ด
์๋ ๊ฒ์ ์ง๋ผ๋ ค๋๊น(?) ์กฐ๊ธ ํ๋ค์๋ ๋ฌธ์ ์๋ค.
์ฒ์์ 2์ฐจ์ ๋ฆฌ์คํธ๋ก ๋ฌธ์ ํ๋ํ๋์ฉ ๋์ด์ keyboard = [['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'], ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'], ['z', 'x', 'c', 'v', 'b', 'n', 'm']]
๋ก ์ ์ธํ๋๋ฐ, ์ด๊ฒ๋ณด๋ค ํ๋จ์ ์๋ ์ฝ๋์ฒ๋ผ ํ๋์ ๋ฆฌ์คํธ๋ก ๊ฐ์ธ๊ณ ๋ฌธ์์ด์ 'str'
์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ฉด ๊ฒฐ๊ณผ๋ ๋์ผํ์ง๋ง ์ฝ๋๋ ๋์ฑ ๊ฐ๊ฒฐํด์ง๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
์ด ๋ฌธ์ ์์ ํต์ฌ์ ์ผ๋ก ํ๋จํด์ผ ํ๋ ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ๋ค.
1. ๋ฌธ์๋ฅผ ํค๋ณด๋์ ์ขํ๋ก ๋ณํํ๋ค.
- check_coordinate
ํจ์๋ฅผ ์ ์ธํด์ ํด๋น key
์ column
๊ณผ index
์ ์์น๋ฅผ ๋ฐํํ๋ค.
2. ํ์ฌ ๋ฌธ์๊ฐ ํค๋ณด๋์ ํ๊ธ ์์์ธ์ง ํ๊ธ ๋ชจ์์ธ์ง ๊ตฌ๋ถํ๋ค. ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด ๋ค์ ์ฌ์ง์ ๋ณด์.
3. ํด๋น ๋ฌธ์์ด์ ์ถ๋ ฅํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์ด ์๊ฐ์ ๊ตฌํ๋ค.
- ๋ฌธ์์ด์ ์ ์ฒด ๊ธธ์ด
(๊ฐ ํค๋ฅผ ๋๋ฅด๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ) + ์ด์ key
์์ ๋ค์ key
๋ก ๋์ด๊ฐ๋ ์๊ฐ์ ํ์ ๊ฑฐ๋ฆฌ๋ฅผ ํตํด ๋ค์ key
๋ก ๋์ด๊ฐ๋ ์๊ฐ์ ๊ตฌํ๋๋ฐ, ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ ์
๋ ฅ์ ์ ํํ 2๊ธ์๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ ๊ณ์ฐํ ๊ฐ์ ๊ฐฑ์ ํด์ค์ผ ํ๋ค๋ ์ ์ด๋ค.
import sys
keyboard = ['qwertyuiop', 'asdfghjkl', 'zxcvbnm'] # keyboard position
def check_coordinate(key): # find coordinate, index key
for i in range(3):
if key in keyboard[i]:
return i, keyboard[i].index(key)
sl, sr = input().split()
st = sys.stdin.readline().strip()
time, distance = len(st), 0 # ๋ฌธ์์ด์ ์ ์ฒด ๊ธธ์ด
cur_sl_column, cur_sl_row = check_coordinate(sl) # ์ฒ์ ์ฃผ์ด์ง๋ sl์ ์ขํ
cur_sr_column, cur_sr_row = check_coordinate(sr) # ์ฒ์ ์ฃผ์ด์ง๋ sr์ ์ขํ
for i in st:
column, row = check_coordinate(i)
if (column <= 1 and row <= 4) or (column == 2 and row <= 3): # ์์ ์ํ์ ์
๋ ฅํ๋ ๊ฒฝ์ฐ
distance += abs(cur_sl_column - column) + abs(cur_sl_row - row) # ํ์ ๊ฑฐ๋ฆฌ
cur_sl_column = column # cur_column ๊ฐ ๊ฐฑ์
cur_sl_row = row # cur_row ๊ฐ ๊ฐฑ์
else: # ๋ชจ์ ์ํ์ ์
๋ ฅํ๋ ๊ฒฝ์ฐ
distance += abs(cur_sr_column - column) + abs(cur_sr_row - row)
cur_sr_column = column
cur_sr_row = row
time += distance # ๋ฌธ์์ด์ ์ ์ฒด ๊ธธ์ด + `key`๊ฐ ์์ง์ธ ์ด ๊ฑฐ๋ฆฌ
print(time)
'Algorithm > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 2615 - ์ค๋ชฉ (6) | 2021.06.03 |
---|---|
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 2902 - KMP๋ ์ KMP์ผ๊น? (0) | 2021.06.02 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 1244 - ์ค์์น ์ผ๊ณ ๋๊ธฐ (4) | 2021.05.31 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 2490 - ์ท๋์ด (0) | 2021.05.30 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 3009 - ๋ค ๋ฒ์งธ ์ (0) | 2021.05.30 |
๋๊ธ