티스토리 뷰

var n,a,b,c,i:int64;
begin
readln(n);
c:=n*2; b:=0;
for i:=1 to n do begin
read(a);
c+=a*2+abs(a-b);
b:=a;
end;
write(c+a);
end.

 

풀이 : 기하학

 

0. 변수의 타입은 정수형

1. 위 아래는 반드시 겉넓기가 1입니다. 고로 위 아래의 겉넓이는 n*2 입니다.

2. b는 왼쪽에 있는 직육면체의 넓이를 의미합니다. 처음엔 없으니 0으로 초기화 합니다.

3. n개를 입력받는데, 여기서 a*2는 특정 높이의 직육면체의 앞 뒤 겉넓이를 의미하며, abs(a-b)는 특정 높이의 직육면체의 왼쪽 겉넓이를 의미합니다.

4. b:=a 을 하는 이유는 왼쪽에 있는 직육면체를 최근껄로 바꾸기 위함입니다.

5. 출력은 c+a 인데 여기서 +a 을 한 이유는 마지막 블럭의 오른쪽 겉넓이를 c에 추가하지 않았기 때문입니다.

 

빨간색 부분이 abs(a-b)

파란색 부분이 마지막 c+a 에서 +a을 담당합니다.

 

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

 

최근에 올라온 글
최근에 달린 댓글
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
글 보관함