CodingTest/Python

BOJ_18238 : ZOAC 2

Soom_1n 2022. 10. 19. 16:35

πŸ‘‰ 문제링크

 

18238번: ZOAC 2

2019λ…„ 12μ›”, 두 번째둜 κ°œμ΅œλœ ZOAC의 μ˜€ν”„λ‹μ„ 맑은 μ„±μš°λŠ” λˆ„κ΅¬λ³΄λ‹€ ν™”λ €ν•˜κ²Œ ZOACλ₯Ό μ•Œλ¦¬λ € ν•œλ‹€. μž‘λ…„ ZOAC의 λ°©μ‹μ€ λ„ˆλ¬΄ μ‹μƒν•˜λ‹€κ³  μƒκ°ν•œ μ„±μš°λŠ” λ¬Έμžμ—΄μ„ λ³΄μ—¬μ£ΌλŠ” μƒˆλ‘œμš΄ κ·œμΉ™μ„ κ³ μ•ˆν•΄

www.acmicpc.net



πŸ”Έ 문제 뢄석 πŸ”Έ

  • μž…λ ₯된 λ¬Έμžμ—΄μ„ μ›ν˜•νŒμ—μ„œ μ„ νƒν•˜κΈ° μœ„ν•΄μ„œ, μ΅œμ†Œλ‘œ μ›€μ§μΌλ•Œ κ±Έλ¦¬λŠ” μ‹œκ°„μ„ 좜λ ₯ν•œλ‹€.

πŸ”Έ μ½”λ“œ πŸ”Έ

string = list(input())
idx = 0
answer = 0
for s in string:
    next = ord(s) - ord('A')
    diff = abs(next - idx)
    if diff <= 13:
        answer += diff
    else:
        answer += 26 - diff
    idx = next
print(answer)

πŸ”Έ μ½”λ“œ 해석 πŸ”Έ

  • μž…λ ₯된 λ¬Έμžμ—΄μ˜ 문자λ₯Ό ν•˜λ‚˜μ”© 계산에 μ΄μš©ν•œλ‹€.
    • μ•„μŠ€ν‚€μ½”λ“œκ°’μœΌλ‘œ λ³€ν™˜ν•΄ 'A'λ₯Ό 0으둜 λ°”κΎΈλŠ” μ‹μœΌλ‘œ intκ°’μœΌλ‘œ λ³€ν™˜ν•œλ‹€.
    • 판의 전체 숫자의 κ°œμˆ˜λŠ” 26(μ•ŒνŒŒλ²³)이닀. λ§Œμ•½ 절반인 13μ΄μƒμ˜ κ±°λ¦¬μ°¨μ΄λŠ” λ°˜λŒ€λ‘œ λŒλ¦¬λŠ”κ²Œ λΉ λ₯΄λ‹€
    • λ°˜λŒ€λ‘œ λŒλ¦¬λŠ” κ²½μš°λŠ” 26-차이 둜 κ΅¬ν•œλ‹€.
  • 총 κ±Έλ¦° μ‹œκ°„μ„ 좜λ ₯ν•œλ‹€.

πŸ”Έ end πŸ”Έ

  • κ°„λ‹¨ν•œ λ¬Έμ œμ˜€λ‹€. λ°˜λŒ€λ‘œ μ›€μ§μ΄λŠ” 경우λ₯Ό μ–΄λ ΅κ²Œ μƒκ°ν–ˆλŠ”λ°, ν’€κ³ λ³΄λ‹ˆ κ°„λ‹¨ν•œ μ‹μœΌλ‘œ 해결됐닀.

728x90