[SWEA] 1206 s/w 문제해결 기본 1일차 view - python, c
문제 자체는 크게 어렵지 않다. 양 끝 2칸에는 건물이 없기 때문에 계산이 어렵지 않다. 주위 4개의 건물 높이와 자기 자신의 건물 높이를 비교. 내가 더 높을 때에만 가장 높은 주위 건물과의 차를 result에 더해나간다.
python에서는 int로 받을 수 있게 처리를 잘 해주면 되고, max값을 구하는 함수가 있기 때문에 어렵지 않게 문제를 풀 수 있다.
c에서는 max 함수 대신 직접 max 함수를 생성했다.
-
python
for tc in range(10): n = int(input()) data = list(map(int, input().split())) result = 0 for i in range(2, n-2): around = max([data[i - 2], data[i - 1], data[i + 1], data[i + 2]]) if(data[i] > around): result += data[i] - around print(f"#{tc + 1} {result}")
-
c
#include <stdio.h> int n; int buildings[1010]; int check_max; int result; int max(int a, int b, int c, int d) { int result = a; if (result < b) result = b; if (result < c) result = c; if (result < d) result = d; return result; } int main(void) { for (int tc = 1; tc <= 10; tc++) { scanf("%d", &n); result = 0; for (int cnt = 0; cnt < n; cnt++) { scanf("%d", &buildings[cnt]); } for (int cnt = 2; cnt < n - 2; cnt++) { check_max = max(buildings[cnt - 2], buildings[cnt - 1], buildings[cnt + 1], buildings[cnt + 2]); if (buildings[cnt] > check_max) result += (buildings[cnt] - check_max); } printf("#%d %d\n", tc, result); } return 0; }