티스토리 뷰
-문제링크
https://swexpertacademy.com/main/code/problem/problemDetail.do
이런식으로 건물이 줄서있는 .. 나라가있다고치자..
얘들은 건물을 일자로 세워둔다
그리고 양끝 두칸은 무조건 건물을 세우지 않는다
아파트에 살때 양옆으로 두칸씩 건물이 없는경우에 view가 좋단다
그래서 그림처럼 초록색 색칠된부분이 view가 좋은 층이다
인풋으로는 숫자들이 들어오는데
100
0 0 1 3 5 ...
이런식으로 들어온다 첫줄 100은 건물의 수이고 그다음줄 부터는 그 100개 건물들의 높이다
(참고로 양끝 건물 없는 0 0 과 건물 사이에 건물이 없는 0 도 100에 포함된다 이거때문에 문제를 계속 틀렸었다^^!!!! 한시간은 버렸다)
테스트케이스는 총 10개이다
출력은
#테스트케이스번호 좋은view수
로 하면된다
-발상
아이디어는 금방 떠올랐다. . .
체크를 원하는 건물의 높이와 해당 건물 양옆 4개의 건물들 높이를 보고 양옆 4개 건물중 가장 높은애를 찾는다
그리고 가장 높은애가 체크 대상 건물 높이보다 작다면.. 두 건물의 차이가 체크 대상 건물에서 view좋은 층의 수이다.
-코드
import java.util.Scanner;
import java.io.FileInputStream;
import java.util.*;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T;
T=10;
for(int test_case = 1; test_case <= T; test_case++)
{
int goodView=0;
int buildingCount=sc.nextInt();
ArrayList <Integer>buildings=new ArrayList<Integer>();
for(int i=0;i<buildingCount;i++){//테스트케이스의 건물높이들을 buildings에 저장
int t=sc.nextInt();
buildings.add(t);
}
for(int i=2;i<buildingCount-2;i++){
int height=buildings.get(i);//view 체크 대상 빌딩의 높이
int highest=Math.max(buildings.get(i-2),Math.max(buildings.get(i-1),Math.max(buildings.get(i+1),buildings.get(i+2))));
if(highest<height){
goodView+=height-highest;
}
}
System.out.println("#"+test_case+" "+goodView);
}
}
}
'공부 > 코딩테스트' 카테고리의 다른 글
SW Expert Academy 1859. 백만 장자 프로젝트- 난이도 D2 (1) | 2022.11.13 |
---|---|
SW Expert Academy 2806. N-Queen -난이도 D3 (1) | 2022.11.12 |
SW Expert Academy 1208. [S/W 문제해결 기본] 1일차 - Flatten - 난이도 D3 (0) | 2022.11.11 |
SW Expert Academy [S/W 문제해결 응용] 2일차 - 최대 상금 -난이도 D3 (0) | 2022.11.11 |
[프로그래머스, JAVA] 약수의 합 (0) | 2022.11.02 |