B에서 L로 도달하는데 R만 피하면 됩니다.
(문제 설명에 조건이 누락되어 있는데) B, L, R은 단 한개씩입니다.
그래서 B - R - L(또는 L - R - B)이 일직선으로 있는 경우만 예외처리해서 단순하게 구현하면 됩니다.
#include <iostream>
using namespace std;
int Bx, By, Rx, Ry, Lx, Ly, ans;
int main() {
for (int i = 0; i < 10; i++) for (int j = 0; j < 10; j++) {
char t;
cin >> t;
if (t == 'B') { Bx = i; By = j; }
if (t == 'R') { Rx = i; Ry = j; }
if (t == 'L') { Lx = i; Ly = j; }
}
ans = abs(Bx - Lx) + abs(By - Ly) - 1;
if (Bx == Rx && Rx == Lx) {
if (By < Ry && Ry < Ly)
ans = 1 + abs(By - Ly);
else if (Ry < By && Ly < Ry)
ans = 1 + abs(By - Ly);
}
else if (By == Ry && Ry == Ly) {
if (Bx < Rx && Rx < Lx)
ans = 1 + abs(Bx - Lx);
else if (Lx < Rx && Rx < Bx)
ans = 1 + abs(Bx - Lx);
}
cout << ans << endl;
}