[SW Expert Academy] 1206 (C++)

이얀조·2023년 8월 2일
0

1206 SW Expert Academy [S/W 문제해결 기본] 1일차 - View

🍃 문제

문제의 경우 무단 복제를 금지한다고 작성되어 있으므로 1206 번을 찾아보시면 될 것 같습니다 !
간단하게 요약하자면 다음과 같다.

  • 어떠한 빌딩은 창문을 열었을 때 좌/우 최소 2 의 시야를 확보해야 전망이 보이게 된다.
  • 조망권이 확보된 세대의 수를 반환하자.

👐🏻 코드

#include<iostream>
#include <stdio.h>
#include <algorithm>
#include <queue>
using namespace std;

int main(int argc, char** argv)
{
	int test_case;
	int T;
    
	//freopen("input.txt", "r", stdin);
	int ary[1000];
	for (int i = 1; i < 11; i++) {
		int answer = 0;
		cin >> T;

		for (test_case = 0; test_case < T; ++test_case)
		{
			cin >> ary[test_case];
		}

		int max_h = 0;
		for (int i = 2; i < T - 2; i++) {
			max_h = max({ary[i - 1], ary[i - 2], ary[i + 1], ary[i + 2]});
			if (ary[i] > max_h) answer += (ary[i] - max_h);
		}

		cout << "#" << i << " " << answer << endl;
	}
	return 0;//정상종료시 반드시 0을 리턴해야합니다.
}

⛪ 풀이

문제를 보고나서 빌딩의 수가 크지 않다면 각 빌딩의 높이 배열만 있으면 충분하다고 생각했다.
→ 다행히 가로가 최대 1000이라고 명시 되어 있다.

따라서 빌딩의 높이를 배열에 담고, 왼쪽 빌딩 2개와 오른쪽 빌딩 2개의 높이 중 최대 높이를 구해주었다. (max_h)

현재 빌딩의 높이와 max_h 의 차이 (해당 빌딩에서 전망이 확보된 세대수) 를 answer 에 계속 더해 주면서 전망이 확보된 빌딩의 세대수를 더해주었다.


🌋 어려웠던 점

  • 삼성 코딩테스트는 SW Academy 사이트를 통해 진행되기 때문에 해당 환경에 적응하기 위해 사용한 Visual Studio 적응이 제일 힘들었다 ^ .. ^
profile
이얀조다!

0개의 댓글