SSONG Cloud
[SWEA] 1206 View 본문
반응형
: 결국 각각의 아파트의 층수를 비교해야 한다. 특히 모든 아파트의 층수를 비교하는게 아니라
좌우로 최대 2칸까지 떨어진 곳까지만 층수를 비교하면 된다.
1. 아파트의 층수를 N으로 입력받는다.
2. 각각의 아파트 층수를 배열로 만든다.
3. 배열을 순회하며 해당 번째의 아파트에서 최대 2칸까지 떨어진 곳들의 층수와 비교한다.
: 여기서 최대 2칸까지 떨어진 곳들이기 때문에 총 4곳과 비교하게 되고, 만약 이 4곳 보다 높다면 조망권을 확보할 수
있는 층수는 4곳중 가장 높은곳과 해당 번째의 층수의 차이가 된다.
→ 4곳 중 가장 높은 곳과 해당 번째의 층수 차이는 나머지 차이들 중에 가장 작은 값이 될 것이기 때문에
차이들을 저장한 diff 배열을 정렬시켜 0번째 요소를 조망권을 확보한 층수로 볼 수 있다.
4. 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Solution {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws NumberFormatException, IOException {
for(int tc = 1; tc <= 10; tc++) {
int N = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
int[] apart = new int[N];
for(int i = 0; i < N; i++)
apart[i] = Integer.parseInt(st.nextToken());
int total = 0; // 총 조망권 확보 개수
for(int i = 2; i < N-2; i++) {
int[] diff = new int[4];
diff[0] = apart[i] - apart[i-1];
diff[1] = apart[i] - apart[i-2];
diff[2] = apart[i] - apart[i+1];
diff[3] = apart[i] - apart[i+2];
Arrays.sort(diff);
if(diff[0] > 0) {
total += diff[0];
}
}
sb.append("#" + tc + " " + total+"\n");
}
System.out.println(sb);
}
}
반응형
'Algorithm > SW Expert Academy' 카테고리의 다른 글
[SWEA] 2817 부분 수열의 합 (0) | 2021.02.10 |
---|---|
[SWEA] 1234 비밀번호 (0) | 2021.02.09 |
[SWEA] 10912 외로운 문자 (0) | 2021.02.08 |
[SWEA] 5789 현주의 상자 바꾸기 (0) | 2021.02.08 |
[SWEA] 5601 [Professional] 쥬스 나누기 (0) | 2021.02.08 |
Comments