1. 나의 설계가 확실한지? 더 좋은 방법이나 더 간편한 방법은 없는지 검토하는 시간을 갖습니다. 예외는 없는지 확실하게 합니다. 그러기 위해서 처음과 끝을 처리해봅니다. 예제뿐만 아니라, 문제를 꼼꼼히 읽어보고, 뒤에 받을 새로운 변수에 대해서도 적용해보도록 합니다. 예외가 있을 것 같은 것은 확실히 찾아내도록 합니다. |
/* 11:00 문제 해결 1일차 풀이하도록 하겠습니다. 40분컷하도록 하겠습니다. 조망권 확보 됬는지 확인하기 1이 있으면 그곳에 좌우로 2칸씩 확인해서 0이면 오케이입니다. 예제를 보면 0 0 3 5 2 4 9 0 6 4 0 6 0 0 입니다. 다 그릴 필요가 없이 일단 저것을 다 넣은 다음에 인덱스 하나씩 옮겨가면서 양 옆의 빌등의 높이를 받아서 처리하면 됩니다. */ #include <iostream> #include <algorithm> using namespace std; #define SIZE 1005 // 1005 int map[SIZE]; int ans; int N; int leftMax, rightMax; void problemIn() { cin >> N; for (int i = 0; i < N; i++) { cin >> map[i]; } } void init() { ans = 0; } void solve() { for (int i = 2; i < N-2; i++) { leftMax = max(map[i - 1], map[i - 2]); rightMax = max(map[i + 1], map[i + 2]);
if ((map[i] - leftMax) > 0 && (map[i] - rightMax) > 0) { ans += map[i] - max(leftMax, rightMax); } } } int main() { for (int tc = 1; tc <= 10; tc++) { problemIn(); solve(); cout << "#" << tc << " " << ans << endl; init(); } return 0; } |