公式
B - 倉庫の点検ロボット / Warehouse Inspection Robot 解説
by
B - 倉庫の点検ロボット / Warehouse Inspection Robot 解説
by
kyopro_friends
問題文の指示通りにロボットの移動をシミュレーションし、都度倉庫の状態を更新します。最後にグリッド全体を調べることで残った荷物の個数を求めます。
ロボットがグリッドの外に移動しないようにする点、最初のマスの荷物も回収される点に注意してください。
実装例 (C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int h, w, n;
cin >> h >> w >> n;
vector<string>s(h);
for(int i=0; i<h; i++) cin >> s[i];
string T;
cin >> T;
int i = 0, j = 0;
if(s[i][j] == '#'){
s[i][j] = '.';
}
for(char t: T){
if(t == 'U'){
if(i-1 >= 0){
i--;
}
}else if(t == 'D'){
if(i+1 < h){
i++;
}
}else if(t == 'L'){
if(j-1 >= 0){
j--;
}
}else if(t == 'R'){
if(j+1 < w){
j++;
}
}
if(s[i][j] == '#'){
s[i][j] = '.';
}
}
int ans = 0;
for(int i=0; i<h; i++){
for(int j=0; j<w; j++){
if(s[i][j] == '#'){
ans++;
}
}
}
cout << ans << endl;
}
実装例 (Python)
H, W, N = map(int, input().split())
S = [list(input()) for _ in range(H)]
T = input()
i, j = 0, 0
if S[i][j] == '#':
S[i][j] = '.'
for t in T:
if t == 'U':
if i-1 >= 0:
i -= 1
elif t == 'D':
if i+1 < H:
i += 1
elif t == 'L':
if j-1 >= 0:
j -= 1
elif t == 'R':
if j+1 < W:
j += 1
if S[i][j] == '#':
S[i][j] = '.'
ans = 0
for i in range(H):
for j in range(W):
if S[i][j] == '#':
ans += 1
print(ans)
投稿日時:
最終更新:
