📎 서론
구름톤 챌린지란, 알고리즘 문제를 평일에 딱 1 문제만 푸는 챌린지이다.
평일 오전 10시에 문제가 공개되고, 문제가 공개된 지 48시간 안에 문제를 해결하면 된다.
그럼 챌린지 시작해 보자🏃♂️🏃♂️
구름톤 챌린지
구름LEVEL 알고리즘 먼데이 챌린지가 구름톤 챌린지로 새롭게 찾아왔습니다. 온라인 알고리즘 문제 풀이와 오프라인 팀 챌린지를 모두 즐길 수 있는 구름톤 챌린지와 4주 동안 매일 꾸준히 성장
9oormthonchallenge.oopy.io
📃 문제
💡 문제풀이
맛의 정도가 가장 높은 재료를 기준으로 좌우로 정렬되어 있는지 확인하는 문제이다.
정렬의 조건은 맛의 정도가 가장 높은 재료를 기준으로 위랑 아래로 갈수록 정수의 값이 감소하거나 같아야 한다.
💻 제출코드
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;
}
}
💭 후기
배열이 정렬의 조건에 맞는지 확인만 해주면 되기 때문에 문제가 어렵지는 않았다.
문제의 제한 시간이 끝나면, 다른 사람들이 제출한 코드도 볼 수 있으면 좋겠다.