[SWEA-1206] : [S/W 문제해결 기본] 1일차 - View (JAVA)Algorithm/- SWEA2023. 10. 29. 22:20
Table of Contents
D3 [S/W 문제해결 기본] - View를 JAVA로 풀어보자!
Solution
import java.util.*;
import java.io.*;
import java.lang.*;
public class Solution {
public static void algorithm(int[] arr1) { // 구현
int cnt =0;
for(int i=2; i < arr1.length-2; i++ ) { // 처음2칸 마지막2칸 제외
//현재 자리기준 양 옆 2칸 check에 담기
int[] check = {arr1[i-2],arr1[i-1],arr1[i+1],arr1[i+2]};
//정렬
Arrays.sort(check);
//결국 check에서 가장큰값이 어디있든 조망권확보 세대는 같음
if(check[3] < arr1[i]) { // 내주변 건물중 가장 큰 건물보다 현재 내 건물이 크다면
cnt += arr1[i] - check[3]; // 조망권 확보세대 구하기
}
}
System.out.println(cnt);
}
public static void main(String[] args){ // 조건 입력 받기
Scanner sc = new Scanner(System.in);
for(int tcase=0; tcase<10; tcase++) {
int num = sc.nextInt();
int[] arr1 = new int[num];
for(int i=0; i< arr1.length; i++) {
arr1[i] = sc.nextInt();
}
System.out.print("#"+(tcase+1)+" ");
algorithm(arr1); // 함수 호출
}
}
}
Tips
현재자리 i 기준 건물 양 옆 2칸에 포함되는 건물들 중 가장 큰 건물은 오른쪽에 있든 왼쪽에 있든
현재자리 건물의 View를 방해합니다. 그렇기 때문에
1. 현재자리 기준 양옆 2칸 건물들의 높이를 Arrays.sort() 이용하여 정렬
2. 현재자리 건물이 check[3]에 위치하는 건물보다 크다면
3. arr1[i] - check[3] 하면 확보되는 조망권을 도출할 수 있습니다
@Koben :: KOBEN
나만의 개발 데이터베이스!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!