대상 빌딩과 주변 4개의 빌딩을 비교할 때, 자기 자신을 비교하는 케이스를 포함하여 diff가 0이되고, break되어 버림.. 그래서
테케 실행했을 때 0나옴
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main(int argc, char** argv)
{
int test_case;
int W; //건물 수
int B[1000]; // i번째 건물의 층수는 B[i]
int i; // B의 인덱스
int j; // local 비교
int cnt; //조망권이 확보된 세대의 수
int diff;//주변 건물과 높이 차이
int diff_min;//diff 중 최댓값
int b; // break
for(test_case = 1; test_case <= 10; ++test_case)
{
scanf("%d", &W); //cin >> W;
cnt = 0;
B[1000] = {0,};
printf("#%d ", test_case);
for(i = 0; i < W; i++)
{
scanf("%d", &B[i]);
}
for(i = 2; i < W - 2; i++)
{
diff_min = B[i];
for(j = i-2; j <= i+2; j++)
{
if(j == i) continue; //자기 자신과 비교하지 않는다.
diff = B[i] - B[j];
if(diff <= 0)
{
diff_min = 0;
break;
}
else
{
if(diff_min >= diff)
diff_min = diff;
}
}
cnt += diff_min;
}
printf("%d\n", cnt);
}
return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
'Study > 코딩테스트 문제풀이' 카테고리의 다른 글
[코드트리 챌린지] 1주 - dx dy 아주 기본 (1) | 2023.09.10 |
---|---|
[SWEA D2] 1209. Sum (0) | 2023.02.15 |
[SWEA D3] 1208. Flatten (0) | 2023.02.15 |
[SWEA D2] 1204. 최빈수 구하기 (0) | 2023.02.15 |