📎 서론
구름톤 챌린지란, 알고리즘 문제를 평일에 딱 1 문제만 푸는 챌린지이다.
평일 오전 10시에 문제가 공개되고, 문제가 공개된 지 48시간 안에 문제를 해결하면 된다.
그럼 챌린지 시작해 보자🏃♂️🏃♂️
📃 문제
💡 문제풀이
맛의 정도가 가장 높은 재료를 기준으로 좌우로 정렬되어 있는지 확인하는 문제이다.
정렬의 조건은 맛의 정도가 가장 높은 재료를 기준으로 위랑 아래로 갈수록 정수의 값이 감소하거나 같아야 한다.
💻 제출코드
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] taste = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
taste[i] = Integer.parseInt(st.nextToken());
}
// 맛의 정도가 가장 높은 재료의 인덱스와 값을 찾음
int maxIndex = 0;
int maxValue = taste[0];
for (int i = 1; i < N; i++) {
if (taste[i] > maxValue) {
maxValue = taste[i];
maxIndex = i;
}
}
// 맛의 정도가 가장 높은 재료를 기준으로 좌우로 정렬된 재료인지 확인
if (check(N, taste, maxIndex)) {
int sum = 0;
for (int i = 0; i < N; i++) {
sum += taste[i];
}
System.out.println(sum);
} else {
System.out.println(0);
}
}
// 재료 배열이 맛의 정도가 가장 높은 재료를 기준으로 좌우로 정렬되었는지 확인하는 함수
public static boolean check(int N, int[] taste, int maxIndex) {
boolean Perfect = true;
// 맛의 정도가 가장 높은 재료를 기준으로 오른쪽으로 검사
for (int i = maxIndex; i < N - 1; i++) {
if (taste[i] < taste[i + 1]) {
Perfect = false;
}
}
// 맛의 정도가 가장 높은 재료를 기준으로 왼쪽으로 검사
for (int i = maxIndex; i > 0; i--) {
if (taste[i] < taste[i - 1]) {
Perfect = false;
}
}
return Perfect;
}
}
💭 후기
배열이 정렬의 조건에 맞는지 확인만 해주면 되기 때문에 문제가 어렵지는 않았다.
문제의 제한 시간이 끝나면, 다른 사람들이 제출한 코드도 볼 수 있으면 좋겠다.