250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(SWEA c++)1206. [S/W 문제해결 기본] 1일차 - View 본문
728x90
반응형
우선 10개의 테스트 케이스가 주어지기 때문에 for문을 10번 반복한다.(test case 개수 입력을 받지 않으니 주의!)
int형 변수로 건물 개수를 나타내는 t,
왼쪽의 빌딩 높이를 나타내는 left,
오른쪽의 빌딩 높이를 나타내는 right,
전망 좋은 집의 개수를 더하는 count를 선언한다.
전역변수로는 int형 배열 arr[1000]을 선언하였다.
이제 2 ~ t - 2 인덱스까지 순회하도록 한다.
left는 (현재 빌딩의 인덱스 - 2) 와 (현재 빌딩의 인덱스 - 1)의 대소를 비교하여 더 높은 빌딩의 높이를 구한다.
right도 (현재 빌딩의 인덱스 + 2) 와 (현재 빌딩의 인덱스 + 1)의 대소를 비교하여 더 높은 빌딩의 높이를 구한다.
만약 left, right가 모두 현재 빌딩보다 낮으면
count에 값을 더해주도록 한다.
더해주는 값은 (현재 빌딩의 높이) - (left와 right 중 더 높은 빌딩)이다.
삼항 연산자를 이용하여 간단하게 코드를 구현하였다.
#include <iostream>
using namespace std;
int arr[1000] = {0, };
int main(void)
{
for(int i = 1; i <= 10; i++)
{
int t, left = 0, right = 0, count = 0;
cin >> t;
for(int j = 0; j < t; j++)
cin >> arr[j];
for(int j = 2; j < t - 2; j++)
{
left = arr[j - 2] > arr[j - 1] ? arr[j - 2] : arr[j - 1];
right = arr[j + 2] > arr[j + 1] ? arr[j + 2] : arr[j + 1];
if(arr[j] > left && arr[j] > right)
count += arr[j] - (left > right ? left : right);
}
cout << "#" << i << " " << count << endl;
}
return 0;
}
728x90
반응형
'SW Expert Academy' 카테고리의 다른 글
(SWEA c++)1209. [S/W 문제해결 기본] 2일차 - Sum (0) | 2020.10.07 |
---|---|
(SWEA c++)1208. [S/W 문제해결 기본] 1일차 - Flatten (0) | 2020.10.07 |
(SWEA c++)5603. [Professional] 건초더미 (0) | 2020.10.05 |
(SWEA c++)5607. [Professional] 조합 (0) | 2020.10.05 |
(SWEA c++)2001. 파리 퇴치 (0) | 2020.09.28 |