λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Algorithm/μ΄μ½”ν…Œ

[이것이 취업을 μœ„ν•œ μ½”λ”©ν…ŒμŠ€νŠΈλ‹€] κ΅¬ν˜„ - μ™•μ‹€μ˜ λ‚˜μ΄νŠΈ

 

 

문제 

 

행볡 μ™•κ΅­μ˜ μ™•μ‹€ 정원은 체슀판과 같은 8 × 8 μ’Œν‘œ 평면이닀. μ™•μ‹€ μ •μ›μ˜ νŠΉμ •ν•œ ν•œ 칸에 λ‚˜μ΄νŠΈκ°€ μ„œμžˆλ‹€.
λ‚˜μ΄νŠΈλŠ” 맀우 μΆ©μ„±μŠ€λŸ¬μš΄ μ‹ ν•˜λ‘œμ„œ 맀일 λ¬΄μˆ μ„ μ—°λ§ˆν•œλ‹€
λ‚˜μ΄νŠΈλŠ” 말을 타고 있기 λ•Œλ¬Έμ— 이동을 ν•  λ•ŒλŠ” L자 ν˜•νƒœλ‘œλ§Œ 이동할 수 있으며 정원 λ°–μœΌλ‘œλŠ” λ‚˜κ°ˆ 수 μ—†λ‹€
λ‚˜μ΄νŠΈλŠ” νŠΉμ • μœ„μΉ˜μ—μ„œ λ‹€μŒκ³Ό 같은 2가지 경우둜 이동할 수 μžˆλ‹€

  1. μˆ˜ν‰μœΌλ‘œ 두 μΉΈ μ΄λ™ν•œ 뒀에 수직으둜 ν•œ μΉΈ μ΄λ™ν•˜κΈ°
  2. 수직으둜 두 μΉΈ μ΄λ™ν•œ 뒀에 μˆ˜ν‰μœΌλ‘œ ν•œ μΉΈ μ΄λ™ν•˜κΈ°

 

μž…λ ₯ 

 

첫째 쀄에 8x8 μ’Œν‘œ ν‰λ©΄μƒμ—μ„œ ν˜„μž¬ λ‚˜μ΄νŠΈκ°€ μœ„μΉ˜ν•œ 곳의 μ’Œν‘œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” 두 문자둜 κ΅¬μ„±λœ λ¬Έμžμ—΄μ΄ μž…λ ₯λœλ‹€. μž…λ ₯ λ¬ΈμžλŠ” a1 처럼 μ—΄κ³Ό ν–‰μœΌλ‘œ 이뀄진닀.

 

 

좜λ ₯ 

 

첫째 쀄에 λ‚˜μ΄νŠΈκ°€ 이동할 수 μžˆλŠ” 경우의 수λ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

 

 

ν•΄μ„€ μ½”λ“œ
# ν˜„μž¬ λ‚˜μ΄νŠΈμ˜ μœ„μΉ˜ μž…λ ₯λ°›κΈ°
input_data = input()
row = int(input_data[1])
column = int(ord(input_data[0])) - int(ord('a')) + 1

# λ‚˜μ΄νŠΈκ°€ 이동할 수 μžˆλŠ” 8가지 λ°©ν–₯ μ •μ˜
steps = [(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)]

# 8가지 λ°©ν–₯에 λŒ€ν•˜μ—¬ 각 μœ„μΉ˜λ‘œ 이동이 κ°€λŠ₯ν•œμ§€ 확인
result = 0
for step in steps:
    # μ΄λ™ν•˜κ³ μž ν•˜λŠ” μœ„μΉ˜ 확인
    next_row = row + step[0]
    next_column = column + step[1]
    # ν•΄λ‹Ή μœ„μΉ˜λ‘œ 이동이 κ°€λŠ₯ν•˜λ‹€λ©΄ 카운트 증가
    if next_row >= 1 and next_row <= 8 and next_column >= 1 and next_column <= 8:
        result += 1

print(result)

: 이 ν•΄μ„€ μ½”λ“œμ—μ„œ κ°€μž₯ λ¨Όμ € ν—·κ°ˆλ Έλ˜ 뢀뢄은 columnμ—μ„œ a의 μœ λ‹ˆμ½”λ“œ μ •μˆ˜λ§ŒνΌ λΉΌμ£Όκ³  1을 λ”ν•˜λŠ” λΆ€λΆ„μ΄μ—ˆλ‹€. κ·Έλž˜μ„œ 이 뢀뢄을 곰곰히 μƒκ°ν•΄λ³΄λ‹ˆ a의 μœ λ‹ˆμ½”λ“œλ§ŒνΌ λΉΌμ£Όκ³  1을 λ”ν•˜μ§€ μ•ŠμœΌλ©΄ μž…λ ₯된 κ°’μ˜ λ‹¨μˆœν•œ μœ λ‹ˆμ½”λ“œ μ •μˆ˜κ°’λ§Œ λ‚˜μ˜€λ©°, μ΄λŠ” ν–‰μ˜ 경우 1λΆ€ν„° μ‹œμž‘ν•˜λŠ” ν–‰μ˜ index와 λ§žμ§€ μ•Šκ²Œ λœλ‹€. 그러기 λ•Œλ¬Έμ— a의 μœ λ‹ˆμ½”λ“œ μ •μˆ˜λ§ŒνΌ λΉΌμ£Όμ–΄ index의 μ‹œμž‘μ„ 0으둜 맞좰주고, μœ„ 문제의 경우 indexκ°€ 1λΆ€ν„° μ‹œμž‘ν•˜κΈ° λ•Œλ¬Έμ— 1을 더해야 ν•œλ‹€. 

 

: λ‚˜λ¨Έμ§€ 문제 진행은 'μƒν•˜μ’Œμš°' λ¬Έμ œμ™€ λΉ„μŠ·ν•˜κ²Œ μ§„ν–‰λ˜μ—ˆλ‹€. λ‚˜μ΄νŠΈκ°€ 이동할 수 μžˆλŠ” 8가지 λ°©ν–₯을 λ°°μ—΄λ‘œ μ •μ˜ν•΄μ€€ ν›„ 쑰건에 λ§žλŠ” 경우 (이동이 κ°€λŠ₯ν•œ 경우)에 result 값을 ν•˜λ‚˜μ”© μ¦κ°€μ‹œν‚¨λ‹€.