티스토리 뷰

var r,c,d,e,i,j:int64; a,b:array[1..10] of int64; s:string;
begin
readln(r,c); d:=99;
for i:=1 to 10 do begin a[i]:=0; b[i]:=0; end;
for i:=1 to 10 do begin
readln(s);
 for j:=1 to 10 do begin
 if s[j]='o' then begin a[i]:=1; b[j]:=1; end;
 end;
end;
for i:=1 to 10 do for j:=1 to 10 do 
 if (a[i]=0) and (b[j]=0) then begin
  e := abs(r-i)+abs(c-j);
  if d>e then d:=e;
 end;
write(d);
end.

 

풀이 : 기하학

 

0. (r,c) 좌표를 받을 때는 정수형으로, 나머지 o x.... 들은 한줄씩 string으로 입력을 받습니다.

1. a[10]. b[10] 정수형 배열들은, 특정 행, 열 에는 폭탄이 있는 경우 1로 합니다. (이를 위해서 초기화는 0으로 합니다)

2. 한줄씩 문자열로 입력을 받습니다. 그런 다음 o를 찾고 이 o가 위치한 좌표에 대응하는 a, b의 값을 1로 바꾸어 줍니다.

3. (1,1) 부터 (10,10) 까지 순회하면서, a[i], b[j] 가 둘 다 0 이면서 (폭탄의 범위에 휘말리지 않는) r, c와의 최소 거리를 찾습니다.

4. r,c 로부터 안전한 구역까지의 최소거리를 출력합니다.

 

https://www.acmicpc.net/problem/17290

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함