Post
ZOAC 3(λ°±μ€€ 20436번) | Gihun Son

ZOAC 3(λ°±μ€€ 20436번)

πŸ’‘ **Check Point !

(Β ν•΄λ‹Ήμ‚¬ν•­Β βœ“μ²΄ν¬Β )

  1. λ§‰νž˜ 없이 μˆ˜μ›”ν•˜κ²Œ ν’€λ¦° λ¬Έμ œμΈκ°€?βœ“

  2. 1μ‹œκ°„μ΄λ‚΄λ‘œ ν’€λ Έλ˜ λ¬Έμ œμΈκ°€?

  3. 1μ‹œκ°„ 이상 or 며칠을 두고 ν’€μ–΄λ΄€λ”λ‹ˆ ν’€λ¦° λ¬Έμ œμΈκ°€?

  4. μ‹œκ°„μ„ 써도 도무지 ν’€ 수 μ—†λŠ” λ¬Έμ œμΈκ°€?

  5. μ†”λ£¨μ…˜μ„ μ°Ύμ•„λ΄€λŠ”κ°€?βœ“


λ‚œμ΄λ„ 체감

  1. μ΅œμƒ

  2. 상

  3. μ€‘βœ“

  4. ν•˜


이해도

  1. μ™„λ²½νžˆ μ΄ν•΄βœ“

  2. λ‹€μ†Œ ν—·κ°ˆλ¦¬λŠ” 뢀뢄듀이 있음

  3. 이해 λͺ»ν•¨

문제

2020λ…„ 12μ›”, μ„Έ 번째둜 개졜된 ZOAC의 μ˜€ν”„λ‹μ„ 맑은 μ„±μš°λŠ” λˆ„κ΅¬λ³΄λ‹€ λΉ λ₯΄κ²Œ ZOACλ₯Ό μ•Œλ¦¬λ € ν•œλ‹€.

ν•˜μ§€λ§Œ μ•ˆνƒ€κΉκ²Œλ„ μ„±μš°λŠ” λ…μˆ˜λ¦¬νƒ€λ²•μ΄λ‹€!

  • λ…μˆ˜λ¦¬ νƒ€λ²•μ΄λž€ μ–‘ μ†μ˜ κ²€μ§€μ†κ°€λ½λ§Œμ„ μ΄μš©ν•΄ νƒ€μžλ₯Ό μΉ˜λŠ” 타법이닀.
  • μ„±μš°λŠ” ν•œκΈ€ 자음 μͺ½ μžνŒμ€ 왼손 κ²€μ§€μ†κ°€λ½μœΌλ‘œ μž…λ ₯ν•˜κ³ , ν•œκΈ€ λͺ¨μŒ μͺ½ μžνŒμ€ 였λ₯Έμ† κ²€μ§€μ†κ°€λ½μœΌλ‘œ μž…λ ₯ν•œλ‹€.
  • a의 μ’Œν‘œκ°€ (x1, y1)이고,Β b의 μ’Œν‘œκ°€ (x2, y2)일 λ•Œ,Β a에 μœ„μΉ˜ν•œ μ„±μš°μ˜ 손가락이 b둜 μ΄λ™ν•˜λŠ” λ°μ—λŠ”Β a와 b의 νƒμ‹œ 거리x1-x2+y1-y2만큼의 μ‹œκ°„μ΄ κ±Έλ¦°λ‹€.
  • 각 ν‚€λ₯Ό λˆ„λ₯΄λŠ” λ°μ—λŠ” 1의 μ‹œκ°„μ΄ κ±Έλ¦°λ‹€.
  • μ„±μš°λŠ” 두 손을 λ™μ‹œμ— 움직일 수 μ—†λ‹€.
  • μ„±μš°κ°€ μ‚¬μš©ν•˜λŠ” ν‚€λ³΄λ“œλŠ” 쿼티식 ν‚€λ³΄λ“œμ΄λ©°, μ•„λž˜ 그림처럼 생겼닀.

    https://upload.acmicpc.net/408ea292-3a7e-4b25-b5ec-d6a85f82a6ce/-/preview/

λ°”μœ μ„±μš°λ₯Ό μœ„ν•˜μ—¬ ν•΄λ‹Ή λ¬Έμžμ—΄μ„ 좜λ ₯ν•˜λŠ” 데 κ±Έλ¦¬λŠ” μ‹œκ°„μ˜ μ΅œμ†Ÿκ°’μ„ κ΅¬ν•΄λ³΄μž.

Untitled

λ‚˜μ˜ 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
keyboard=[list('qwertyuiop'),list('asdfghjkl'),list('zxcvbnm')]
cons='qwertasdfgzxcv'
l_w,r_w=input().split()

for i in range(len(keyboard)):
    for j in range(len(keyboard[i])):
        if keyboard[i][j]==l_w:
            l=[i,j]
        elif keyboard[i][j]==r_w:
            r=[i,j]
word=input()
count=0
for w in word:
    br=0
    if w in cons:
        for i in range(len(keyboard)):
            for j in range(len(keyboard[i])):
                if keyboard[i][j]==w:
                    count=count+abs(l[0]-i)+abs(l[1]-j)+1
                    l[0]=i
                    l[1]=j
                    br=1
                    break
            if br:
                break
    else:
        for i in range(len(keyboard)):
            for j in range(len(keyboard[i])):
                if keyboard[i][j]==w:
                    count=count+abs(r[0]-i)+abs(r[1]-j)+1
                    r[0]=i
                    r[1]=j
                    br=1
                    break
            if br:
                break
print(count)
  • μœ„ λ¬Έμ œλŠ” ν‚€λ³΄λ“œμ˜ μˆ˜κ°€ λ§Žμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ™„μ „ νƒμƒ‰μœΌλ‘œ ν•΄κ²°ν•  수 μžˆλ‹€. ν•œκΈ€μ˜ 자음 뢀뢄은 왼손, λͺ¨μŒ 뢀뢄은 였λ₯Έμ†μ„ μ΄λ™μ‹œμΌœμ•Ό ν•˜κΈ° λ•Œλ¬Έμ—, cons에 자음 뢀뢄에 ν•΄λ‹Ήν•˜λŠ” μ˜μ–΄ 문자λ₯Ό λͺ¨λ‘ 넣어두고, ν•΄λ‹Ή λ¬Έμžμ—΄μ— μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ 였λ₯Έμ†μ„ μ΄λ™μ‹œν‚€λŠ” κ²ƒμœΌλ‘œ κ³„μ‚°ν•œλ‹€.
  • 왼손과 였λ₯Έμ†μ˜ ν˜„μž¬ μœ„μΉ˜μ—μ„œ, 이동할 ν‚€λ³΄λ“œμ˜ μœ„μΉ˜ 차이λ₯Ό κ³„μ‚°ν•˜μ—¬ 더해주고, λˆ„λ₯΄λŠ” κ²ƒκΉŒμ§€ μƒκ°ν•˜μ—¬ +1을 ν•΄μ€€λ‹€.
This post is licensed under CC BY 4.0 by the author.