---
# System prepended metadata

title: 【APCS】m932. 2. 蜜蜂觀察 - Python 解
tags: [Python, 程式語言]

---

【APCS】m932. 2. 蜜蜂觀察 - Python 解
===

詳細資訊：https://zerojudge.tw/ShowProblem?problemid=m932

身為一個高中程式小白，上次在APCS考場中遇到這題，我瞬間懵了一下，雖說最後有解出來，但似乎我的答案並不是 AC。

註：這篇文章其實很早就寫完了，只不過現在才發XD。這篇文只是純粹因為解出我不會的題目，感到欣喜若狂，所以藉此分享。

以下是程式碼：

```python=
import sys

m, n, k = map(int, sys.stdin.readline().split())

mm, nn = m-1, n-1

mat = [list(input()) for _ in range(m)]

step = [int(i) for i in input().split()]

result = []

x, y = mm, 0

for i in range(k):
    if step[i] == 0:
        if x - 1 >= 0:
            x -= 1
            result += mat[x][y]
        else:
            result += mat[x][y]
    elif step[i] == 1:
        if y + 1 <= nn:
            y += 1
            result += mat[x][y]
        else:
            result += mat[x][y]
    elif step[i] == 2:
        if x + 1 <= mm and y + 1 <= nn:
            x += 1
            y += 1
            result += mat[x][y]
        else:
            result += mat[x][y]
    elif step[i] == 3:
        if x + 1 <= mm:
            x += 1
            result += mat[x][y]
        else:
            result += mat[x][y]
    elif step[i] == 4:
        if y - 1 >= 0:
            y -= 1
            result += mat[x][y]
        else:
            result += mat[x][y]
    elif step[i] == 5:
        if x - 1 >= 0 and y - 1 >= 0:
            x -= 1
            y -= 1
            result += mat[x][y]
        else:
            result += mat[x][y]
            
print(''.join(result))
print(len(set(result)))        
```

雖然說並不是最簡潔的程式碼，也不是效率最高的，但能真正解出來真的讓我非常開心XD。

這題主要是在考「字元處理」、「邊界檢查」、「二維陣列」，算是每年 APCS 第二題的典例。