티스토리 뷰

링크 : https://codility.com/programmers/lessons/7-stacks_and_queues/stone_wall/

 

문제>

벽을 세워야 한다.

벽은 N미터로 두께는 일정하지만 다른 장소에서는 다른 높이를 가져야한다.

벽의 높이는 N개의 양의 정수로 이루어진 배열 H.

H[0]은 벽의 왼쪽 끝의 높이, H[N-1]은 벽의 오른쪽 끝의 높이이다.

벽을 구축하는데 필요한 최소 블록 수를 계산하라.

 

 

해결방법.

* H[N미터] = 높이.

* H[i+1]이 H[i]가 보다 크다면 벽은 점점 높아진다.(새로운 블록이 생긴다.) < 이부분을 체크하면 된다.

* H[i+1]이 H[i]가 보다 작다면 벽을 닫는다.

 

1) 길이를 체크할 스택생성.

2) 0부터 N까지 반복.

- 만약 스택이 0이면 Push. 블록 카운트 증가.

- 만약 스택이 0보다 크고 Peek값이 H[i] 보다 크다면 Pop 반복.

- Peek값이 H[i] 보다 작다면 Push H[i] 블록 카운트 증가.

*(Peek값이 H[i] 같은건 체크하지 않는다. 문제의 다른 높이를 가져야 하는 조건.)

 

 

 

 

 

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